2013-08-22 3 views
2

Я использую следующий метод в EF Beta1, чтобы получить список PropertyInfos, которые ссылаются на данный тип:Entityframework RC1 - МетаданныеItem.Annotations сделаны внутренними - альтернативы?

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 (see) в Аннотации -свойстве системы .Data.Entity.Core.Metadata.Edm.MetadataItem был сделан внутренним.

Мое быстрое обходное решение - использовать отражение для доступа к внутреннему свойству, но мне интересно, есть ли какое-либо другое решение для получения PropertyInfo данного NavigationProperty без взлома.

ответ

0

Аннотации представлены внутри экземпляра MetadataProperty. Вы должны иметь возможность получить аннотацию из коллекции MetadataItem.MetadataProperties. Аннотацию можно добавлять/удалять с использованием MetadataItem.AddAnnotation и соответственно MetadataItem.RemoveAnnotation.