C# 实体框架4:获取两个表的数据并返回到persentation层
我有两个表有1对1的关系。一个表名为C# 实体框架4:获取两个表的数据并返回到persentation层,c#,asp.net,entity-framework-4,C#,Asp.net,Entity Framework 4,我有两个表有1对1的关系。一个表名为Person,第二个表名为PersonDetailsPesonId作为FK在PersonDetails表中 我可以像这样查询单个表 public static Person GetPersonById(int personId) { using (var context = new REntities()) { return context.Person.Where(p => p.PersonId == personId).Fir
Person
,第二个表名为PersonDetails
PesonId
作为FK
在PersonDetails
表中
我可以像这样查询单个表
public static Person GetPersonById(int personId)
{
using (var context = new REntities())
{
return context.Person.Where(p => p.PersonId == personId).First();
}
}
它用于消费代码,如:
Person personInfo = PersonService.GetPersonById(personId);
与主键上的PersonDetail
相同,即PersonDetail
但是,当我必须从两个表中获取数据时,我不知道该怎么做,以及将数据返回到表示层的最佳方式是什么
下面是获取Person
和关联PersonDetails
记录的代码:
from personData in context.person.Include("PersonDetail")
where personData.PersonId == personId
select personData;
这里的personData是什么?
如何迭代它并在客户机代码中获取每个项
谢谢。当您获取Person对象时,您也可以在查询中包含PersonDetails对象,如下所示
using (var context = new REntities())
{
return context.Person.Include("PersonDetail").Where(p => p.PersonId == personId).First();
}
from p in personInfo.PersonDetails
select p; // here p is the person detail object
现在在演示方面,当您获得Person对象时,像这样迭代每个Person细节项
using (var context = new REntities())
{
return context.Person.Include("PersonDetail").Where(p => p.PersonId == personId).First();
}
from p in personInfo.PersonDetails
select p; // here p is the person detail object
希望有帮助。如果您首先使用实体框架代码(EF 4.1),请将
Person
类中的PersonDetails
属性标记为virtual
。这将使EF能够自动填充数据,因此您只需执行person.PersonDetails
即可获取数据列表