0

全て、

私はEntity Framework 4(まだCTP5ではない)から始めており、NHibernateをEFに移行する複雑さを見ています。

コレクションまたは関連するエンティティプロキシであるかどうかをテストし、そうである場合は通常とは異なるコードを実行するコードがあります。コレクションがプロキシでない場合(つまり、既にコンテキストにロードされている場合)、コレクションに対して直接何か別のことを行います。

コレクションに IRelatedEnd インターフェイスを使用するようにこのコードを移行しましたが、ICollection を IRelatedEnd にキャストすると、EF でコレクションが読み込まれます。その結果、IsLoaded == true をチェックすると、コレクションがプロキシになることはありません。次の行で。

これがカスタム POCO であることを考慮して、何か特別なことをする必要がありますか、それともこれは予想される動作ですか?

同様に、関連エンティティがプロキシであるかどうかをテストする方法はありますか?

どうもありがとう

4

1 に答える 1

2

プロキシをテストするために MSDN で提案されている方法は、次のようなものを使用することです。

public static bool IsProxy(object type)
{
    return type != null && ObjectContext.GetObjectType(type.GetType()) != type.GetType();
}

この方法は、EF 4 と EF 4.1 Codefirst の両方で機能します。

遅延読み込みに関しては、IRelatedEnd を使用したことはありません。POCO のナビゲーション プロパティを ICollection として残して、遅延読み込みが有効になっていることを確認します。それを超えて、それはただ機能します。

context.ContextOptions.LazyLoadingEnabled = true;

遅延読み込み用の edmx のオプションもあります。

于 2011-05-17T16:41:25.913 に答える