我有2个表:订单和客户。订单通过IdCustomer外键与客户相关。
问题:我想在DataGrid中显示两个表中的值,并希望能够编辑属于Orders表的数据。
我设法在网格中显示和编辑Orders表,但是如何包含Customers表中的数据?
this.grdData.ItemsSource = context.Orders;
private void btnSave_Click(object sender, RoutedEventArgs e)
{
context.SaveChanges();
}
答案 0 :(得分:1)
通常情况下,如果您的表中有fk,您的实体中就会有关系。如果你没有它,你应该添加它。
最好的方法是为要从两个实体显示的内容创建一个ViewModel类:
public class OrderViewModel {
public string CustomerName{ get; set; }
public decimal OrderTotal { get; set; }
public DateTime Date { get; set; }
}
然后,您需要执行一个检索所有信息的查询:
var query = from o in dataContext.Orders
select new ViewModel {
CustomerName = o.Customer.Name,
OrderTotal = o.Total,
Date = o.Date
};
并将其用作网格的数据源。
如果你的模型中没有任何关系,你可以做一个不太直接的查询:
var query = from o in dataContext.Orders
join c in dataContext.Customers on o.CustomerId equals c.Id
select new ViewModel {
CustomerName = c.Name,
OrderTotal = o.Total,
Date = o.Date
};