如何使用EF查看和编辑DataGrid中多个表的数据?

时间:2012-10-01 05:31:06

标签: c# .net wpf entity-framework

我有2个表:订单和客户。订单通过IdCustomer外键与客户相关。

问题:我想在DataGrid中显示两个表中的值,并希望能够编辑属于Orders表的数据。

我设法在网格中显示和编辑Orders表,但是如何包含Customers表中的数据?

this.grdData.ItemsSource = context.Orders;

private void btnSave_Click(object sender, RoutedEventArgs e)
{
    context.SaveChanges();
}

1 个答案:

答案 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
                                  };