我正在尝试使用实体框架在Windows窗体中填充GridView。我有以下类使用这些数据
Class Office
OfficeId
Region
Address
City
[ForeignKey("OfficeContactId")]
public virtual OfficeContact OfficeContacts
[ForeignKey("RegionalTechnicianId")]
public virtual RegionalTechnician RegionalTechnicians
Class OfficeContact
OfficeContactId
Name
Email
Phone
Class RegionalTechnician
RegionalTechnicianId
Name
Email
Phone
以下操作可以很好地使用Office数据(OfficeId、Region、Address、City(填充GridView,但我不确定如何提取其他数据
dataGridView.DataSource = context.Offices.ToList<Office>();
dataGridView.DataSource = (from office in context.Offices
join OfficeContact in context.OfficeContacts on office.OfficeId equals OfficeContact.OfficeContactId
join RegionalTechnician in context.RegionalTechnicians on office.OfficeId equals RegionalTechnician.RegionalTechnicianId
select new
{
OfficeId = office.OfficeId,
Region = office.Region,
Address = office.Address,
City = office.City,
OfficeContactId = OfficeContact.OfficeContactId,
OfficeContactName = OfficeContact.Name,
OfficeContactEmail = OfficeContact.Email,
OfficeContactPhone = OfficeContact.Phone,
RegionalTechnicianId = RegionalTechnician.RegionalTechnicianId,
RegionalTechnicianName = RegionalTechnician.Name,
RegionalTechnicianEmail = RegionalTechnician.Email,
RegionalTechnicianPhone = RegionalTechnician.Phone
}).ToList();
牵引溶液
-
使用LINQ。
请访问此页面。
显示导航属性在数据网格中的属性第二级属性
-
在数据库中创建视图,在代码中创建视图模型。
例如:
Create View officeView
as
Select o.OfficeId,
o.Region,
o.Address,
o.City,
r.Email,
r.Name,
r.Phone
From Office o
left join RegionalTechnician r on r.RegionalTechnicianId= o.RegionalTechnicianId
left join OfficeContact oc on oc.OfficeContactId= o.OfficeContactId
代码中:更新上下文(实体框架(
在更新上下文之后,您就有了这样的模型
public partial class officeView
{
public long OfficeId { get; set; }
public string Region { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string Email { get; set; }
public string Name { get; set; }
public string Phone { get; set; }
}
然后:
dataGridView.DataSource = context.officeViews.ToList();