2015-06-17 24 views
1

我使用實體框架6.1,DbContext,數據庫優先。 我知道我可以通過這樣的名稱獲得DBsets:context.Myobj1,context.Myobj2 .....在DBContext上遍歷所有的DBSet(的TEntity)

但是有沒有可能爲...每個循環做一個並且一個一個得到所有DbContext上的DbSet(of Tentity)?

+0

您可以使用反射。這是DbContext做的發現模型。 – Pawel

+0

看看http://romiller.com/2014/04/08/ef6-1-mapping-between-types-tables/ 類似於((((IObjectContextAdapter)ctx).ObjectContext.MetadataWorkspace).GetItems < EntityContainer>(DataSpace.CSpace).Single()。EntitySets'應該訣竅 – jbl

回答

-1

您需要發現實體的類型。這取決於你的應用程序。您可以使用反射來發現這些類型。或者你可以硬編碼你的實體類型。

這個你可以循環但下山後:

var types = new [] { typeof(User), typeof(Role) }; // just example 

foreach(var type in types) 
{ 
    foreach(var entity in context.DbSet(type)) 
    { ... } 
} 
+0

*「您可以使用反射來發現這些類型」 - 是的,問題是如何做到這一點。 *「或者你可以硬編碼你的實體的類型」* - 當然,但這不是很有幫助。 –