2

OrdersとCustomersの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
                                 };

グリッドのデータ ソースとして使用します。

万が一、モデルに関係がない場合は、単純ではないクエリを実行できます。

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 に答える