我一直在 EF Beta1 中使用以下方法来获取引用给定类型的 PropertyInfos 列表:
public static List<PropertyInfo> GetReferencingAssociations(Type entityType, ObjectContext objectContext)
{
var result = (from edmType in objectContext.MetadataWorkspace.GetItems<EntityType>(DataSpace.CSpace)
from navigationProperty in edmType.NavigationProperties
let propertyInfo = (PropertyInfo)navigationProperty.Annotations.Single(y => y.Name == "ClrPropertyInfo").Value
where propertyInfo.PropertyType == entityType
select propertyInfo).ToList();
return result;
}
然而,在最近发布的 RC1(参见)中,System.Data.Entity.Core.Metadata.Edm.MetadataItem 的Annotations -Property 已被设置为内部。
我的快速解决方法是使用反射来访问内部属性,但我想知道是否有任何其他解决方案可以在没有反射黑客的情况下获取给定 NavigationProperty 的 PropertyInfo。