同様の問題があります。
同じトランザクション スコープで 2 つの挿入を行いたいです。オブジェクトは関連しており、それらの間に FK 関係がありますが、いくつかの理由から、ナビゲーション プロパティを介してそれらを接続するのではなく、ID によってのみ接続したいと考えています。
これは、私が達成したいことを単純化したものです。
Order o = new Order();
OrderDetails d = new OrderDetails();
new Repository().SaveNew(o, d);
class Repository{
void SaveNew(Order o, OrderDetails d){
using (TransactionScope transaction = new TransactionScope())
{
_context.Connection.Open();
// order
_context.Orders.ApplyChanges(o);
_context.SaveChanges();
// details
d.OrderID = o.ID;
_context.OrderDetails.ApplyChanges(d);
_context.SaveChanges(); <--- UpdateException
_context.Connection.Close();
transaction.Complete();
}
}
}
問題は、FK 評価が失敗したために UpdateException が発生することです。FK 関係を削除して、まったく同じコードを実行しようとしたところ、問題なく動作し、両方のオブジェクトに適切なプロパティが設定されていました。では、なぜこのアプローチは失敗するのでしょうか? そして、これはどのように行うべきですか?繰り返しますが、ナビゲーション プロパティを介してエンティティをアタッチしたくありません。
ありがとうございました!