2010-08-12 72 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)。

相關問題