で同時に親オブジェクトとその子(親の外部キーを持つ)のリストを保存する以下のコードはSalesOrderテーブルにSales Ordersを、SalesOrderDetailテーブルにSales Order Detailsを自動的に保存しますか?EF
私の目標は、自分のプライマリエンティティのリストを作成し、そのナビゲーションプロパティを使用して別のリストを作成し、すべてをワンショットで保存できるようにすることです。
以下を参照してください:
List<SalesOrder> salesOrders = new List<SalesOrder>()
{
new SalesOrder()
{
OrderDate = DateTime.Now,
OrderDetails = new List<SalesOrderDetail>()
{
new SalesOrderDetail() { ItemId = 1 },
new SalesOrderDetail() { ItemId = 2 },
new SalesOrderDetail() { ItemId = 3 }
}
},
new SalesOrder()
{
OrderDate = DateTime.Now,
OrderDetails = new List<SalesOrderDetail>()
{
new SalesOrderDetail() { ItemId = 1 },
new SalesOrderDetail() { ItemId = 2 }
}
}
};
_context.SalesOrders.AddRange(salesOrders);
_context.SaveChanges();
や私のような何かをする必要がありますするつもりです:
_context.SalesOrders.AddRange(salesOrders);
_context.SalesOrderDetails.AddRange(salesOrders[0].OrderDetails);
_context.SalesOrderDetails.AddRange(salesOrders[1].OrderDetails);
_context.SaveChanges();
コードを実行して動作するかどうかを確認します。 –
@ ZivWeissmanのアドバイスが最適です。実験!しかし、肘掛け椅子(実験的なものではないと考える)の観点から。なぜこれが機能するのかわかりません。 EFは、エンティティをリンクするためにプロパティを使用します。これは、SQL結合条件のEFに相当します。 SalesOrdersとSalesOrderDetailsのどちらにも、関連エンティティへのリンクが必要な情報はありません。私は、EFが実際に2つのエンティティをどのようにリンクするかを示す答えを示す例を投稿します。 – DWright