我正在创建一个在数据库中不存在的新EntityObject(SQLite)。我填充对象的属性并将其连接到父对象。我没有填充主键属性,因为据我所知,EF应该自动为我生成一个临时的EntityKey。 然后我使用AddObject方法将新创建的EntityObject添加到上下文中,然后调用SaveChanges。
我收到UpdateException:由于约束违规而中止 PRIMARY KEY必须是唯一的。 我看到主键属性始终设置为0,尽管它应该是数据库中的下一个可用值,对吧? 我在数据库中检查了主键字段是否自动增量。
如何让EF给我一个临时的EntityKey?
答案 0 :(得分:0)
EF不会为您创建临时密钥。您需要自己生成临时密钥。
您可以做什么:在装有[NotMapped]
属性的模型中添加属性。在对象创建中,应使用值初始化此值。 Guids
可以很好地解决问题。您只需使用Guid.NewGuid()
为您生成临时密钥。
[NotMapped]
可确保您的字段不会保留在数据库中。