如果不正确初始化标识列, DbSet.Create() 的目的是什么?

What's the purpose of DbSet.Create() if not to properly initialize the identity columns?

正在与 Entity Framework Database First

合作

为什么在我的任何 DbContext Sets 中发出 Create 方法都会创建集合实体的实例而不增加其标识列?

考虑到我首先构建了所有我想添加到给定集合的实体,并且只构建了一次,最后,我通过 DbContext.SaveChanges() 将它们全部添加 - DbSet.Create() 的真正用途是什么,如果不 属性 初始化标识列?我可以简单地手动将我的 DbSet 实例化为 var newEntity = new MyClass();

因为您还没有 SavedChanges 并且您可能不会,所以增加标识列是没有意义的。

它实际上做的是创建一个新实例并将其包装在一个代理对象中,该对象就是返回的对象。代理对象允许它跟踪您何时访问 class 上的属性,这意味着它可以在您设置相关外键 ID 属性.[= 时更新导航属性(用于延迟加载) 11=]

有关详细信息,请参阅 https://msdn.microsoft.com/en-us/data/jj592886.aspx