2

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

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

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

this.grdData.ItemsSource = context.Orders;

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

1 回答 1

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

并将其用作 Grid 的数据源。

如果您的模型中没有任何关系,则可以进行不那么直接的查询:

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
                                  };
于 2012-10-01T05:52:12.043 回答