我想从实体获取上下文和属性名称中的所有实体名称。第二个问题可以通过反射解决,但如何做第一部分?
例如,我有实体User
和Address
,每个用户都有地址。结果我需要得到以下内容:
Entity: User
Property: LastName
Property: FirstName
Property: Address
Entity: Address
Property: City
Property: Street
答案 0 :(得分: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;
希望有所帮助