在Entity Framework 4中从父级获取子级

时间:2012-12-08 20:00:59

标签: c# entity-framework-4

我是Entity Framework的新手,现在我可以通过id加载父。

但是我想在加载父项后从父项访问子属性。

    protected void getChild_Click(object sender, EventArgs e)
    {
        JeansEntities db = new JeansEntities();
        Employe employe = db.Employes.SingleOrDefault(p => p.Id == 3);

        uxCountry.Text = //(address.Country) Its the child of Employe, but I can acces by the parent
    }

enter image description here

由于

2 个答案:

答案 0 :(得分:1)

您可以通过让查询知道您还想要Address子项来实现此目的。您可以使用“预先加载”来执行此操作。这是由Include("NavigationPropertyName")

完成的
protected void getChild_Click(object sender, EventArgs e)
{
    JeansEntities db = new JeansEntities();
    Employe employe = db.Employes.Include("Addresses")
       .SingleOrDefault(p => p.Id == 3);

    var address = employe.Addresses.FirstOrDefault();

    if (address != null)
        uxCountry.Text = address.Country;
}

为了实现这一点,您必须在edm中包含EmployeAddresses之间的关系。

答案 1 :(得分:0)

您可以在linq查询中使用Include:

Employe employe = db.Employes.Include(e=>e.Address).SingleOrDefault(p => p.Id == 3);

如果您的导航属性是虚拟的,也可以使用延迟评估。在这种情况下,您可以在未处理DBContext数据库时使用var address = employe.Address,并且EF会从数据库中获取它。

更新:您应该#using System.Data.Entity;