0

オブジェクトの(EF デザイナー/edmx にある)EntityFrameworkメタデータを取得する方法がわかりません。EntityPoco

例えば。

私の図には というエンティティがありUserます。というPocoクラスもありますUser。エンティティ名と Poco は同じ名前である必要があるという印象を受けているので、慣習により 2 つを自動マッピングできます (同じプロパティ名を持つ poco などと一緒に...)。

タイプ Poco がある場合、どのようにエンティティを取得し、そのエンティティをチェックして、EntityKeyまたはStoreGeneratedPatternなどのメタデータを確認できますか?

ああ、ちなみに... Pocoの型が何なのかわかりません..意味..クラスはジェネリックを使用しています...

public class GenericRepository<T> : IRepository<T> where T : class
{ ... }

だから、私は文脈を尋ねなければならないと思ったname == typeof(T).Name...何かを持っているエンティティをつかむ...

4

2 に答える 2

1

マッピング メタデータへのアクセスは、通常、 によって実行されObjectContext.MetadataWorkspaceます。CTP5 はObjectContextインスタンスを非表示にし、( に基づくDbMappingMetadataItem) マッピングに関連するほとんどのマッピング クラスは内部であるか、内部メンバーのみを含みます。

DbContextEDMX から自動生成されたようです。この場合、おそらくできることは、DbContextを受け入れるコンストラクターを呼び出して作成することObjectCotnextです。その場合ObjectContext、すべてのメソッド/プロパティにアクセスできます。

なぜあなたはそれが必要なのですか?リポジトリで何か特別なことをする必要がある場合は、そのタイプの特別なリポジトリを作成する必要があります。汎用リポジトリは、非常に基本的なソリューションのみの概念です。

于 2011-02-02T09:02:26.200 に答える
0

ObjectContext にアクセスできる場合 (EntityKey/EntityState はコンテキストなしでは意味をなさないため、必要だと思います)、次を使用できます。

ObjectStateEntry ose = 
    context.ObjectStateManager.GetObjectStateEntry(yourObject);

そこから、あらゆる種類の楽しいプロパティを取得できます: http://msdn.microsoft.com/en-us/library/system.data.objects.objectstateentry.aspx

TryGetObjectStateEntry(...)また、便利だと思うかもしれません。

于 2011-02-02T01:52:43.930 に答える