正如MSDN建议的,我们可以使用以下内容ObjectContext
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
// Add the new object to the context.
context.Products.AddObject(newProduct);
}
但是,使用 ObjectSet<T>
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
ObjectSet<Product> pSet = context.CreateObjectSet<Product>();
pSet.AddObject(newProduct);
}
文章的第二段说:
在从.NET Framework版本4开始的版本中,可以使用在ObjectSet上定义的以下方法,而不是在ObjectContext上定义的等效方法。
有什么特别的理由要使用ObjectSet
而不是,ObjectContext
我们怎么知道什么时候使用?
ObjectContext
并且ObjectSet
是传统EF代码,这DbSet
和DbContext
已经围绕包装创建ObjectContext
模型,使EF更好的体验。
在DbSet
和下DbContext
,EF仍在使用ObjectContext
/ ObjectSet
。
从EF 7开始,他们摆脱了所有基本代码,并重新编写了整个EF ORM。
编辑
DbContext
=实体模型的集合,与数据库的连接,日志记录,跟踪和粘合,可能还有我错过的一堆东西。该通常包含1个或更多DbSets<YourEntity>
DbSet
是表示特定实体集合的对象。它包含诸如缓存,插入,更新,仅针对特定实体的选择之类的信息。
我喜欢想到这些
DbContext
=数据库
DbSet
=表
他们是ALOT不止这些,但在概念上这就是我想象他们,不一定映射1:1。例如,实体可以是表的子集,甚至可以是多个表的组合。
关于ObjectSet
和ObjectContext
我缺乏有关它们内部工作方式的经验,无法告诉您真正的区别是什么。我知道DbSet / Context的工作原理,但是我不知道它是由ObjectSet / Context完成的,还有多少是附加的。
也许您可以在野外锻炼身体?:-P
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句