[英]Update SQL Server database via Entity Framework
我正在C#项目中使用Entity Framework从SQL Server数据库读取数据/向SQL Server数据库写入数据。
到目前为止,我读取了数据并进行了一些计算。 现在,我想将结果写入数据库。 我本质上是[ID, Date, Value]
元组的列表。
如果在ID
和Date
组合的目标表中没有行,则更新逻辑应类似于UPSERT,即应发生INSERT
。 如果目标表中已存在ID
和Date
的组合,则应进行UPDATE
。
假设我的结果列表中有〜1000条记录。 如果我遍历列表并为列表中的每个项目执行UPSERT逻辑,那将导致〜1000 INSERT
或UPDATE
语句。 我认为应该有一种更有效的方法来做到这一点。
因此,我的两个问题是:
如何在不为每个结果项生成单独的SQL语句的情况下实现所描述的UPSERT逻辑?
更笼统地说:在使用实体框架的C#中,这样的UPSERT逻辑如何?
我无法发表评论以询问您是否有权访问存储过程,或者是否有其他考虑,因此在此先致歉。
尝试删除要“插入”的所有记录的[ID, Date]
,然后批量插入。 您不一定需要使用Entity Framework poco操作,但可以解决您的问题。
理想情况下,为了提高性能,您希望生成一个SQL Server MERGE
语句,该语句将INSERT
和/或UPDATE
作为单个操作执行。 不幸的是,我不认为这是内置于实体框架中的,但是有相当简单的解决方法。 首先,请看这里:
https://www.flexlabs.org/2018/02/adding-upsert-support-for-entity-framework-core
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.