0

我是 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
    }

在此处输入图像描述

谢谢

4

2 回答 2

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之间Employe和中包含关系。Addresses

于 2012-12-08T20:10:20.530 回答
0

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

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

或者,如果您的导航属性是虚拟的,您可以使用惰性求值。在这种情况下,您可以var address = employe.Address在未处理 DBContext db 时使用,EF 会为您从数据库中获取它。

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

于 2012-12-08T20:06:21.167 回答