0

我正在创建一个在数据库(SQLite)中不存在的新 EntityObject。我填充对象的属性并将其加入父对象。我没有填充主键属性,因为据我了解,EF 应该自动为我生成一个临时 EntityKey。然后我使用 AddObject 方法将新创建的 EntityObject 添加到上下文中,然后调用 SaveChanges。

我收到 UpdateException: Abort 由于违反约束 PRIMARY KEY 必须是唯一的。我看到主键属性始终设置为 0,尽管它应该是数据库中的下一个可用值,对吗?我检查了数据库中的主键字段是自动递增的。

我应该怎么做才能让 EF 给我一个临时 EntityKey?

4

1 回答 1

0

EF 不会为您创建临时密钥。您需要自己生成临时密钥。

你可以做什么:在你的模型中添加一个用属性装饰的[NotMapped]属性。在对象创建中,这个值应该用一个值来初始化。Guids精细地解决问题。您只需要使用Guid.NewGuid()为您生成一个临时密钥。

[NotMapped]确保您的字段不会保留在数据库中。

于 2014-02-21T05:08:21.533 回答