繁体   English   中英

从EntityFramework ObjectContext获取类型集合

[英]Get Types Collection from EntityFramework ObjectContext

如何从ObjectContext提取Types列表?

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

我怎样才能做到这一点?

我假设您在运行时想要查询生成的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的子类。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM