【发布时间】:2020-06-16 11:45:07
【问题描述】:
尝试插入实体时出现错误,(整个图是正确的)当 Id 具有一些设定值时使用实体框架,例如 6。 它之所以拥有它是因为它存储在另一个数据库中,我可以为列表中的每个元素以及子列表中的每个元素等手动设置它。但我必须为每个元素和每个查询执行此操作。 我希望有独特的全局方式将 Id 字段设置为零,因为当我尝试插入值时出现错误:
Cannot insert explicit value for identity column in table 'XXX' when IDENTITY_INSERT is set to OFF.
我希望我的数据库设置 Id,如果 Id 设置为除 0 以外的任何值,则使实体框架忽略
我尝试的是 ovveride OnSaveChanges,但这似乎已经晚了,因为当使用 Add 或 AddRange 方法时,对象开始被跟踪,我无法将 Id 设置为列表中的多个对象。
【问题讨论】:
-
在将
Id添加到任何实体框架集合/跟踪之前,您能否在业务逻辑中将其设置为 0?听起来您是从另一个系统中获取对象,该系统已经具有标识符并且需要去除该标识符,我将其解释为两个系统之间映射的业务逻辑。 -
当然,但是我必须对列表中的每个元素进行 foreach,如果每个元素都有子列表,我必须对该子列表进行 foreach。如果子列表的每个元素都有一些复杂的对象,我必须设置它。此外,我必须在很多地方的每个查询中执行此操作。这样做没有意义,而是要找到“全局”的方法
标签: c# entity-framework asp.net-core entity-framework-core entity-framework-6