2

特定の型を参照している PropertyInfos のリストを取得するために、EF Beta1 で次のメソッドを使用しています。

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 を取得する他の解決策があるかどうか疑問に思っています。

4

1 に答える 1

0

注釈は、MetadataPropertyインスタンスによって内部的に表されます。MetadataItem.MetadataPropertiesコレクションから注釈を取得できるはずです。注釈はMetadataItem.AddAnnotation、それぞれ およびを使用して追加/削除できますMetadataItem.RemoveAnnotation

于 2013-08-22T16:55:00.870 に答える