Entity framework 什么';如果不正确初始化标识列,那么DbSet.Create()的用途是什么?

Entity framework 什么';如果不正确初始化标识列,那么DbSet.Create()的用途是什么?,entity-framework,dbset,Entity Framework,Dbset,首先使用实体框架数据库 为什么在我的任何DbContext集合中发出Create方法都会创建集合实体的实例,而不会增加其标识列 考虑到我首先构建了所有要添加到给定集合的实体,并且只构建了一次,最后我通过DbContext.SaveChanges()-如果不初始化标识列,那么DbSet.Create()的真正用途是什么?我可以简单地手动将我的DbSet实例化为var newEntity=newmyclass()增加标识列是没有意义的,因为您还没有保存更改,而且可能没有 它实际做的是创建一个新实例,

首先使用
实体框架数据库

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


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

增加标识列是没有意义的,因为您还没有保存更改,而且可能没有

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


有关详细信息,请参阅。

增加标识列是没有意义的,因为您还没有保存更改,而且可能没有

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


有关更多信息,请参阅。

你说得对。事实上,它无法知道下一个增量是哪个。我下意识地期待着某种魔法。这一次,我将放手:)那么,在标识列中获取最新增量的最佳实践是什么?获得最大的价值?您必须直接发送SQL-建议您查看此问题或类似问题-您是对的。事实上,它无法知道下一个增量是哪个。我下意识地期待着某种魔法。这一次,我将放手:)那么,在标识列中获取最新增量的最佳实践是什么?获得最大价值?您必须直接发送SQL-建议您查看此问题或类似问题-