entity framework6 Create()vs new
以这两种方式添加实体有什么区别?
MyEntity me = new MyEntity(); entities.myentities.Add(me);
VS
MyEntity me = entities.myentities.Create();
我还需要在第二个例子中添加“我”吗? 如果是这样,是否有某种优势,无论如何?
非常感谢!
MyEntity me = new MyEntity();
将创建一个新的MyEntity
实例
MyEntity me = entities.myentities.Create();
将创建MyEntity
的代理包装实例(假设您的上下文配置为创建代理)
此代理会覆盖实体的某些虚拟属性,以插入用于在访问属性时自动执行操作的挂钩。 例如,此机制用于支持延迟加载关系。
从这里
是的,你仍然需要添加它。 从Create方法的文档 :
为此集的类型创建实体的新实例。 请注意,此实例未添加或附加到集合。
MyEntity me = new MyEntity();
等于
MyEntity me = entities.myentities.Create();
以上两者都创建了MyEntity的新实例,但都没有将它附加到由myentities代表的DbSet。
这条线
entities.myentities.Add(me)
将实例附加到DbSet,尽管您也可以使用Attach(me)
。
第二个示例中需要“me”,因为您将创建一个对象实例而不引用该对象。
如果使用实体inheritance,则可以使用Create()方法实现良好的多态行为,因为它始终实例化正确的实体(非通用实体)。 例:
public DbSet GetDialDbSet(DialEnum type) { DbSet ret; switch (type) { default: case DialEnum.MAPPING_REASON: ret = DialMappingReasons; break; case DialEnum.PROCESSING_INFORMATION: ret = DialProcessingInformation; break; } return ret; }
和多态用法:
上述就是C#学习教程:entity framework6 Create()vs new分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
DialDerived entity = (DialDerived) Db.GetDialDbSet(type).Create()
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1026093.html