我是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
}
由于
答案 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中包含Employe
和Addresses
之间的关系。
答案 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;