3

3 つのテーブルがある場合:

表 1、表 2、表 3

また、Table3 には Table2 の FK があり、Table2 には Table1 の FK があります。

次に、次のようにオブジェクトをロードします。

using(Entities entities = new Entities()
{
     Table1 table = entities.Table1.FirstOrDefault();
     table.Table2.Load();
}

LazyLoading がオフになっているため、table3 を table2 に熱心にロードするにはどうすればよいですか。

FirstOrDefault ステートメントで Include を使用できることはわかっていますが、非常に大きな結合が生成されます。

答え

using(Entities entities = new Entities())
{
    Table1 table = entities.Table1.FirstOrDefault();
    var table2 = table.Table2.CreateSourceQuery().Include("Table3")
        .Execute(MergeOption.AppendOnly);
    table.Table2.Attach(table2);
}
4

1 に答える 1

3

LazyLoading がオフになっているため、table3 を table2 に熱心にロードするにはどうすればよいですか。

あなたが試すことができます:

using(Entities entities = new Entities())
{
    Table1 table = entities.Table1.FirstOrDefault();
    table.Table2.CreateSourceQuery().Include("Table3")
        .Execute(MergeOption.AppendOnly);
}

EntityObjectPOCO ではなくから派生したエンティティを使用していると仮定します。つまりtable.Table2EntityCollection<T>またはEntityReference<T>です。上記のコードが期待どおりに機能するかどうかは 100% わかりません。

于 2012-06-13T13:49:56.147 に答える