【发布时间】:2020-05-14 16:40:03
【问题描述】:
我有一个 ASP .Net Core 2.2 Web API。在我的一个控制器操作中,我将一堆行添加到 MySQL 数据库表中(我正在使用 Pomelo)。
例如:
_dbContext.AddRange(entities);
_dbContext.SaveChanges();
我添加的实体有两个主键(复合主键),当我将它们添加到 DbContext 时,这些键已经填充到实体集合中(即我自己设置键 - 没有“自动增量”或类似数据库生成密钥的东西)
如果我添加的任何实体已经存在于数据库中,就重复的主键而言,那么显然 SaveChanges() 会引发异常,并且整个事务会回滚。
有没有办法告诉 EF Core 忽略失败的实体?即忽略数据库中已经存在的实体,并提交成功的实体(即数据库中不存在的实体)?而不是当前的行为是抛出异常并回滚整个事务?
谢谢
【问题讨论】:
-
使用 Dapper 很简单,因为您可以控制 sql。
标签: mysql asp.net-core dbcontext ef-core-2.2 entity-framework-core-2.2