我在 MVC 中使用实体框架(首先使用数据库的 DbContext)。当用户从表单保存时,我在控制器中有一个条件,根据我的一些内部标志将实体发送到插入方法的更新。
将实体发送到更新方法时,我将其标记为已修改 using context.Entry(myEntity).State = EntityState.Modified;
,我调用 saveChanges() 并且一切正常。
将实体发送到插入方法时,我将其标记为添加使用context.Entry(myEntity).State = EntityState.Added;
,但在调用 saveChanges() 时,我收到有关 2 个必需字段的错误...
问题是这两个字段不是空的,并且它们在保存之前有效地包含有效数据......我什至尝试在保存之前将新值强制到这两个字段但同样的错误。
提到我正在使用 Devart DotConnect For PostgreSQL 作为数据库提供程序可能会很有用。
知道如何调试这个问题吗?
编辑:
这是错误:
一个或多个实体的验证失败。有关更多详细信息,请参阅“EntityValidationErrors”属性。
在查找此 EntityValidationErrors 时,我收到以下 2 个特定错误:
flg_actif 字段是必需的
user_creation 字段是必需的
如前所述,这些字段在保存之前填充了数据,所以我不明白发生了什么。
我正在使用 EF v4.0.30319(system.data.entity=> v4.0 和 EntityFramework=> v4.4)
EDIT2: 只是为了澄清一点:我试图插入的实体已经存在于数据库中。表格显示该数据库行的数据。保存时,我决定是否更新行(这很好用),但有时,我需要将编辑的行作为新寄存器插入,而不是更新它以保留数据库更改的历史记录。