从EntityFramework ObjectContext获取类型集合

时间:2009-07-26 10:17:55

标签: c# .net entity-framework

如何从Types中提取ObjectContext的列表?

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

我该怎么做?

2 个答案:

答案 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>类型的所有公共属性,其中TEntityObject的子类。

答案 1 :(得分:0)

如果您正在使用动态数据,这变得更加容易,我只是在我们的某个应用中执行此操作

MetaModel.GetModel(objectContext.GetType()).Tables.Select(t => t.EntityType);