在实体框架中分配实体密钥



我对实体框架中实体键的分配有一个非常精确的知识缺口。

当你设置一个变量成为实体的实体键时,如果你先做代码或先做模型,它会将列设置为标识,但如果我在模型第一类的默认构造函数中将实体键赋值为0,EF怎么办?

EF会注意到这是一个自动赋值并忽略我在构造函数中设置的默认值吗?

或者我应该永远不分配一个实体键,除了当我检索数据?

到目前为止,我还没有看到设置EntityKey对象绝对没有其他选择的第一个场景。但我猜你指的不是那个而是设置一个键

当键是由数据库(标识列)生成时,几乎不需要设置主键值。如果你想要EF插入一个实体,你不设置主键,但你设置它的EntityStateAdded(直接或间接)。

我能想到一个场景,设置主键值是有用的:使用存根实体。例如,假设您知道id值为3的对象A必须被删除,但是对象A还没有从数据库中取出。因此不存在状态可以改变为Deleted的对象。在这种情况下,您可以通过创建仅填充其Id值的存根实体a,将其作为Deleted附加到上下文并保存更改来防止到数据库的往返。

最新更新