实体框架6 Create()vs new

Yab*_*bie 15 c# entity-framework-6

以这两种方式添加实体有什么区别?

MyEntity me = new MyEntity();
entities.myentities.Add(me);
Run Code Online (Sandbox Code Playgroud)

VS

MyEntity me = entities.myentities.Create();
Run Code Online (Sandbox Code Playgroud)

我还需要在第二个例子中添加"我"吗?如果是这样,是否有某种优势,无论如何?

非常感谢!

quj*_*jck 15

MyEntity me = new MyEntity();
Run Code Online (Sandbox Code Playgroud)

将创建一个新的实例 MyEntity

MyEntity me = entities.myentities.Create();
Run Code Online (Sandbox Code Playgroud)

将创建一个代理包装的实例MyEntity(假设您的上下文配置为创建代理)

此代理会覆盖实体的某些虚拟属性,以插入用于在访问属性时自动执行操作的挂钩.例如,此机制用于支持延迟加载关系.

从这里

  • 我希望我不是说明显的,但我有更多的时间玩,我发现{create}方法允许我使用导航属性(在我添加之后)在哪里{new}方式没有. (3认同)

Glo*_*del 6

是的,您仍然需要添加它.从Create方法的文档:

为此集的类型创建实体的新实例.请注意,此实例未添加或附加到集合.