如何从Types
中提取ObjectContext
的列表?
例如,我有对象上下文,其中包含名为“Bank”的实体和名为“Company”的实体。 我想获得它们的EntityObject类型。
我该怎么做?
答案 0 :(得分:5)
我假设您在运行时想要查询生成的ObjectContext
类以获取EntityObject
类的列表。然后它变成了反思的练习:
PropertyInfo[] propertyInfos = objectContext.GetType().GetProperties();
IEnumerable<Type> entityObjectTypes =
from propertyInfo in propertyInfos
let propertyType = propertyInfo.PropertyType
where propertyType.IsGenericType
&& propertyType.Namespace == "System.Data.Objects"
&& propertyType.Name == "ObjectQuery`1"
&& propertyType.GetGenericArguments()[0].IsSubclassOf(typeof(EntityObject))
select propertyType.GetGenericArguments()[0];
此代码将查找对象上下文中具有System.Data.Objects.ObjectQuery<T>
类型的所有公共属性,其中T
是EntityObject
的子类。
答案 1 :(得分:0)
如果您正在使用动态数据,这变得更加容易,我只是在我们的某个应用中执行此操作
MetaModel.GetModel(objectContext.GetType()).Tables.Select(t => t.EntityType);