如何从EF Core Context

时间:2016-12-18 12:26:59

标签: c# entity-framework linq mvvm

我有三个班级:

  1. 国家即可。
  2. 即可。
  3. 课程是:

    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; }
    }
    

    首先,我想提一下我在MVF中使用MVVM。所以,在我的ViewModel中,我有:

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

    然后,在我的视图中,我尝试阅读中的名称字段。不幸的是,我无法成功。只显示国家/地区中的名称字段。 然后我尝试使用调试模式检查 ViewModel 中的国家,我可以看到整个数据都可用。

    所以,我在 ViewModel 中添加了此代码,只是为了检查:

    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 ,但我无法阅读其余内容。甚至。我收到错误,他们找不到!。

    如何阅读这些字段?

1 个答案:

答案 0 :(得分:1)

感谢@Ivan Stone的帮助。这是我需要的版本:

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);