使用实体框架进行批量插入/更新的有效方法

2024-04-19

我有一个实体列表,我想将它们插入数据库。如果实体已经存在于数据库中,则需要跳过它。如果它在数据库中但具有不同的值,则需要更新。

除了对每个项目进行数据库调用之外,还有其他方法可以做到这一点吗?

我的计划是尝试插入,如果抛出键上的唯一约束异常,则进行更新。


在这种情况下不要使用实体框架。只需使用存储过程(如何取决于您使用 EF 的版本/方法,您可能需要扩展您的DbContext或添加实体模型的映射)。

如果您使用的是 SQL Server,那么在您的存储过程中,请使用MERGE http://technet.microsoft.com/en-us/library/bb510625.aspx有效执行命令exactly您需要什么:如果不存在则插入,如果存在则更新。一切都在一个高效的 SQL 查询中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用实体框架进行批量插入/更新的有效方法 的相关文章

  • 如何包装实体框架以在执行前拦截 LINQ 表达式?

    我想在执行之前重写 LINQ 表达式的某些部分 我在将重写器注入正确的位置时遇到问题 实际上根本没有 查看实体框架源代码 在反射器中 它最终归结为IQueryProvider Execute在 EF 中 它通过以下方式耦合到表达式Objec
  • 将列添加到 ASP.NET Identity 中的 AspNetUserClaims

    我在用着Microsoft AspNet Identity Core 2 2 1在我的解决方案中 我需要将其与另一个应自动添加声明的系统集成 为了跟踪哪些声明是手动添加的以及哪些是由外部系统创建的 我希望在我的AspNetUserClaim
  • 实体框架中的嵌套查询

    我收到以下异常 不支持嵌套查询 操作 1 案例 操作 2 收集 通过这个查询 var Games context Games Select a gt new GameModel Members a Type 1 a UsersInGames
  • FindAsync 很慢,但是延迟加载很快

    在我的代码中 我曾经使用加载相关实体await FindAsync 希望我能更好地遵守 C 异步指南 var activeTemplate await exec DbContext FormTemplates FindAsync exec
  • ASP.NET MVC 4,迁移 - 如何在生产服务器上运行“更新数据库”

    我可以使用包管理器在本地运行 update database verbose 可能是一个愚蠢的问题 但我无法在线找到它 一旦我的网站部署 我如何在服务器上手动运行它 其次 您会推荐哪些其他策略来将数据库迁移部署到生产环境 以及它们如何更好
  • 复杂类型:一个模型中有多个实例?

    有没有办法使用 Fluent api 模型构建器在同一模型中拥有复杂类型的多个实例 public class Contact public int Id get set public string FirstName get set pub
  • 将许多表转换为 Excel 列

    我创建了用于文章审阅的网络应用程序 我有一个名为 Article 的表 每个表Article有一些ArticleReview Article ArticleId ArticleTitle NumberOfComment NumberOfVi
  • 如何让实体框架初始化新创建的实体上的集合?

    我正在尝试用一些测试数据来种子我的数据库IDatabaseIntialiser像这样 protected override void Seed BlogDataContext context
  • 使用 Linq to Entities 查询创建 null ienumerable

    我正在开发一个使用实体框架的 ASP NET MVC 项目 我需要将从数据库中提取的值投影到PropertyValue类型 如下所示 public class PropertyValue public string StringValue
  • 实体框架 - 循环更新属性

    我正在尝试找到一种方法来循环 EF 对象的属性并更新这些属性的值 更具体地说 我有 50 个字段 其中最多填充 50 个下拉列表 所有 50 个可能都需要填充 也可能不需要填充 为了解决这个问题 我有一个中继器 最多可以创建 50 个 DD
  • 在 IDbCommandInterceptor 中捕获调用方法名称

    我在用IDbCommandInterceptor捕获实体框架查询 这样我就可以访问一些重要信息 例如DbParameters and DbCommand etc 我还需要获取调用此查询的位置 我试图通过使用来得到这个StackTrace S
  • EF6 Code First 支持表值函数吗?

    是否可以在 EF6 Code First 中调用 TVF 我首先使用 EF6 数据库启动了一个新项目 EF 能够将 TVF 导入到模型中并调用它就好了 但是 对于我一直在处理的没有 RI 的大型只读数据库 更新模型变得非常耗时并且存在问题
  • Linq to Entities 中的动态 where 子句 (OR)

    在文中here https stackoverflow com questions 9122220 dynamic where clause in linq to entities我学习了如何使用 Linq 的延迟执行来构建动态查询 但查询
  • 每个数据库多个/单个 *.edmx 文件

    我有一个通过 ADO net 数据服务与数据库交互的项目 数据库很大 近 150 个具有依赖关系的表 该项目几年前开始 当时使用的是数据集 现在我们正在转向实体模型关系 由于我们添加了更多需要使用的表 该模型正在不断增长 这是管理这一切的正
  • 实体框架中的批量插入

    我使用批量插入插入大量记录 例如 20K 当我仅插入一个实体时 它会正常工作 但是 当我用来插入多个实体 例如一对多 时 它将仅插入父实体 而不会插入子实体 我的实体和代码 Customer cs public class Customer
  • 如何在 EF Core 2.1 中定义外键关系

    我的 DAL 使用 EF Core 2 1 这就是我的模型的样子 一名用户只能拥有一种角色 Role entity kind of master public class Role public int RoleId get set pub
  • OWIN 可以替代 ASP.NET MVC 应用程序中的 DI 吗?

    大约一年前 在 Visual Studio 中创建时自动生成的 MVC 项目不包含任何有关 OWIN 的内容 作为再次申请并试图了解这些变化的人 我想知道 OWIN 是否可以替代我的 DI 据我了解 Startup Auth cs 中的以下
  • 实体框架 - 外键上的双向一对一关系

    我有两个实体 例如 Hat 和 Owner Owner Hat 0 1 1 ID ID Name Size HatId OwnerId 每个主人都有他的帽子 有些帽子没有主人 我创建了模型 public class Owner Key pu
  • 如何使用 linq 查询连接两个不同 edmx 中的两个表

    如何使用 linq 查询连接两个不同 edmx 中的两个表 有没有办法同时从 2 个不同的 edmx 进行查询 Thanks Update 根据您的评论 EF 无法解析跨 2 个不同上下文的组合表达式树 如果表中的记录总数相对较小 或者您可
  • 使用实体框架从集合中删除项目

    我正在使用DDD 我有一个 Product 类 它是一个聚合根 public class Product IAggregateRoot public virtual ICollection

随机推荐