繁体   English   中英

通过实体框架更新SQL Server数据库

[英]Update SQL Server database via Entity Framework

我正在C#项目中使用Entity Framework从SQL Server数据库读取数据/向SQL Server数据库写入数据。

到目前为止,我读取了数据并进行了一些计算。 现在,我想将结果写入数据库。 我本质上是[ID, Date, Value]元组的列表。

如果在IDDate组合的目标表中没有行,则更新逻辑应类似于UPSERT,即应发生INSERT 如果目标表中已存在IDDate的组合,则应进行UPDATE

假设我的结果列表中有〜1000条记录。 如果我遍历列表并为列表中的每个项目执行UPSERT逻辑,那将导致〜1000 INSERTUPDATE语句。 我认为应该有一种更有效的方法来做到这一点。

因此,我的两个问题是:

  1. 如何在不为每个结果项生成单独的SQL语句的情况下实现所描述的UPSERT逻辑?

  2. 更笼统地说:在使用实体框架的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM