从EntityFramework ObjectContext获取类型集合

Tam*_*mir 3 .net c# entity-framework

我怎样才能提取的列表TypesObjectContext

例如,我有对象上下文包含名为"Bank"的实体和名为"Company"的实体.我想获得它们的EntityObject类型.

我怎样才能做到这一点?

Mar*_*age 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];
Run Code Online (Sandbox Code Playgroud)

此代码会发现有类型的对象范围内的所有公共属性System.Data.Objects.ObjectQuery<T>,其中T是的一个子类EntityObject.