2010-08-12 85 views
56

我按照Scott Gu的教程来引用一个名为DbContext的类。我无法在框架4的任何名称空间中找到它,并且它在我看来已从CT4 DbContext重命名为.net4 System.Data.Linq.DataContext。我的假设是否正确?DbContext与DataContext相同吗?

+0

你下载了CTP吗?我相信它使用像System.Data.Entities.CTP或somesuch命名空间... – AllenG 2010-08-12 19:58:24

+0

我没有。但我确实了解了ObjectContext。由于这是一个生产系统,我不能使用CTP。 – 2010-08-13 19:25:39

+5

NB我知道它很明显,但'System.Data.Linq.DataContext'是从LINQ到Sql和'DbContext'是从实体框架 – 2012-10-10 11:55:48

回答

86

DbContext是由EF团队最近单独下载的新类。它目前不是核心EF 4.0的一部分。但前进的DbContext将是与EF交互的首选方式。

那么它与ObjectContext有何不同?在语义上它们是完全相同的,但它们减少了很多额外的噪音,ObjectContext有。就像暴露需要更多的工作组,例如:

public ObjectSet<Customer> Customers 
{ 
    get { return db.CreateObjectSet<Customer>(); } 
} 

随着DbContext你可以这样做:

public DbSet<Customer> Customers { get; set; } 

基本上在ObjectContext,当你点(.),一切都恰到好处有哪些使列表非常庞大。英孚团队实际上想要在DbContext上公开的实体是仅针对您的域的实体,而框架的其余部分则放在不同的属性中。它只是使编程体验更加简单。

这意味着,如果您现在使用ObjectContext,只需一点点代码,您可以轻松移动到DbContext

+1

任何想法什么时候它将被合并到主框架分支? – 2010-08-13 19:24:29

+6

EF 4.1已于2011年4月11日发布。有关详细信息,请参阅http://blogs.msdn.com/b/adonet/archive/2011/04/11/ef-4-1-released.aspx。 – villecoder 2011-05-31 16:55:26

+1

这难道不适合你整个项目的EF吗,说你有一个商业层? – Coops 2013-04-11 12:57:11

6

这有点太晚了,但对于谷歌。 DbContext用于EFEntityFramework)和DataContext用于L2SLINQ To SQL)。

相关问题