2016-12-18 57 views
0

閱讀多層次的數據我有三類:如何從EF核心語境

  1. 國家

的類別是:

public class Country 
{ 
    public Country() 
    { 
     Districts = new HashSet<District>(); 
    } 

    public string Name { get; set; } 
    public virtual ICollection<District> Districts { get; private set; } 
} 

public class District 
{ 
    public District() 
    { 
     Provinces = new HashSet<Province>(); 
    } 

    public string Name { get; set; } 
    public virtual ICollection<Province> Provinces { get; private set; } 
} 

public class Province 
{ 
    public string Name { get; set; } 
} 

起初,我想提一提,我使用MVVM與WPF。所以,在我的ViewModel,我有:

Countries = dbContext 
       .Countries 
       .Include(c => c.Districts) 
       .ThenInclude(p => p.Provinces) 
       .ToList(); 

然後,在我看來,我試着讀區和名稱場。不幸的是,我無法成功。只是名稱字段在國家顯示。 然後我試圖使用調試模式來檢查國家視圖模型,我可以看到整個數據是可用的。

所以,我在視圖模型添加該代碼只是爲了檢查:

string dd = ""; 
foreach (var country in Countries) 
{ 
    dd += country.Name + " "; 
    dd += country.Districts.Name + " "; 
    dd += country.Districts.Provinces.Name + " "; 
    dd += Environment.NewLine; 
} 

MessageBox.Show(dd); 

我可以讀country.Name,但我無法讀取休息。甚至。我得到錯誤,他們沒有找到!

如何閱讀這些領域?

+0

爲什麼你有'Ditrict'作爲類名?錯字? – abdul

+0

@ abdul是的。 –

+1

的問題是,'country.Districts'和'district.Provinces'是** **集合(即,不是一個單一的項目),所以沒有單一的財產'country.Districts.Name'或'country.Districts.Provinces .Name'。你想用'CountryName,DistrictName,ProvinceName'來表示一個列表嗎?或者更好,你能展示所需的輸出嗎? –

回答

1

由於@Ivan石的幫助。這裏是我需要的版本:

string dd = ""; 
foreach (var country in Countries) 
{ 
    dd += country.Name + " "; 
    foreach (var district in country.Districts) 
    { 
     dd += district.Name + " "; 

     foreach (var province in district.Provinces) 
     { 
      dd += province.Name + " "; 
     } 
    } 

    dd += Environment.NewLine; 
} 

MessageBox.Show(dd);