0

私はEntity Framework 4.1 - Code Firstを使用しています。 >地区 - - >シティ - > - >エリア - >アドレスのみ、私はすべての利用可能な地区、都市や地域での提供私の国の内部アドレスに適用フルアドレス階層を取得する(遅延読み込み問題)

国:次のように私は、ユーザーのアドレスを記憶しますユーザーが選択できるようにします。そして、Addressesテーブルに格納されている住所の詳細を入力します。この明確にするために

、以下を見てみましょう:

public class Address 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    [MaxLength(500)] 
    public string Details { get; set; } 
    public bool IsDefaultAddress { get; set; } 
    public string CountryName { get; set; } 
    public Area Area { get; set; } 
    public virtual User User { get; set; } 
} 

public class Area 
{ 
    public int Id { get; set; } 
    public string GoogleName { get; set; } 
    public string FamiliarName { get; set; } 
    public virtual ICollection<Address> Addresses { get; set; } 
    public virtual City City { get; set; } 

    public string GetName 
    { 
     get { return FamiliarName ?? GoogleName; } 
    } 
} 

public class City 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public virtual District District { get; set; } 
    public virtual ICollection<Area> Areas { get; set; } 
} 

public class District 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public virtual ICollection<City> Cities { get; set; } 
    public virtual Country Country { get; set; } 
} 

public class Country 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public virtual ICollection<District> Districts { get; set; } 
} 

は私がvirtualキーワードを使用するかどうかにかかわらず、何も変わらないことに気づきました。 Areaは何らかの理由で常にnullです。

住所を取得してその他の情報(エリア、市区町村、国および国)のオブジェクトをすべてnullにできないようにするにはどうすればよいですか?

+0

エンティティを正しくマッピングしましたか?あなたのマッピングコードを表示する – Eranga

答えて

2

あなたは彼らが単に熱心ロード使う必要があることをわかっている場合:あなたはAreavirtualをマークしたときに、次に何か他のものが間違っている遅延ロードが動作しない場合は

var address = context.Address.Include(a => a.Area.City.District.Country).Where(...); 

を。