6

LazyLoadingEnabled は、関連するエンティティが使用しているコンテキストで読み込まれないようにするために、特に true に設定されています。

薬物クラスには、drugidentity オブジェクトのリストがあります。

public class Drug
{
   public virtual List<DrugIdentity> DrugIdentities { get; set; }
}

ロードする関連エンティティを含めたい場合は、クラスの特定の構成によってキーと hasmany の関係が設定されます。

public DrugConfiguration()
    {
        this.HasKey(d => d.DrugID);
        this.HasMany(d => d.DrugIdentities).WithOptional(d => d.Drug).Map(d => d.MapKey("DrugID"));
    }

linq クエリを使用して Drug コンテキストが読み込まれると、関連する DrugIdentities が含まれていてはならない場合でも、オブジェクトに含まれていることが示されます。

context.Configuration.LazyLoadingEnabled = true;

                    var drugs = from d in context.Drug
                                where d.Active == true
                                select d;

薬[0].DrugIdentities カウント = 1

遅延読み込みが true に設定されているため、 Drugs[0].DrugIdentities が NULL に等しくなると思いますか?

4

3 に答える 3

2

遅延読み込みを無効にするには、LazyLoadingEnabled を true ではなく false に設定します。の関連データの遅延ロード、一括ロード、および明示的ロードを参照してください。

http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/reading-related-data-with-the-entity-framework-in-an-asp-net-mvc-応用

于 2012-05-18T02:42:53.480 に答える
1

ProxyCreationEnabled = false設定したい場合は、具体的に設定する必要がありますLazyLoadingEnabled = true

テストは私が期待した通りに合格しました。最初のクエリは、DrugsオブジェクトとNULLfor を返しますDrugEntitiesDrugEntitiesを使用Includeして熱心な読み込みを行ったため、2 番目のクエリは を返します。

var queryDrug = from d in context.Drug
                                where d.Active == true
                                select d;

                var drugresults = from d in context.Drug.Include(e => e.DrugIdentities)
                                  where d.Active == true
                                  select d;
于 2012-05-18T17:40:39.253 に答える