2011-08-22 64 views
0

我想從實體的上下文和屬性名稱中獲取所有實體的名稱。第二個問題可以通過反射來解決,但如何做第一部分?從EF上下文獲取實體名稱4

例如,我有實體UserAddress,每個用戶都有地址。至於結果,我需要得到以下幾點:

Entity: User 
Property: LastName 
Property: FirstName 
Property: Address 

Entity: Address 
Property: City 
Property: Street 

回答

0

首先,實體(基本類型ComplexObject)實際上是從不同的背景下,被安置在自己的類。

如果你想找到所有的實體類型,你可以使用relfection搜索當前組件的任何類型的繼承ComplexObject像這樣:

這些類型的
List<Type> Types = Assembly.GetExecutingAssembly().GetTypes().Where(T => T.IsSubclassOf(typeof(ComplexObject))).ToList(); 

每一個都與一個EdmxComplexType屬性定義,它爲您提供了命名空間名稱和複雜類型名稱。你可以得到這些屬性,每種類型T,像這樣:

T Instance_Of_T = (T)Activator.CreateInstance(T); 
System.Data.Objects.DataClasses.EdmxComplexTypeAttribute complexTypeAttr = TypeDescriptor.GetAttributes(Instance_Of_T).OfType<System.Data.Objects.DataClasses.EdmxComplexTypeAttribute>().ToList().Single(); 

string NamespaceName = complexTypeAttr.NamespaceName; 
string TypeName = complexTypeAttr.Name; 

希望幫助

+0

感謝。它有幫助,但我不得不使用關鍵字'實體'而不是'複雜',例如,EdmEntityTypeAttribute – Vasily