多対多の関係で追加/更新機能を組み合わせて実行しようとしています。まずDB。Personnel、Orders、PersonnelOrders の 3 つの SQL テーブルがあります。これが私のコードです:
context.ContextOptions.LazyLoadingEnabled = true;
if (saveData.Rows.Count() > 1)
{
foreach (var row in saveData.Rows)
{
if (row != null)
{
var Order_Array = row.Order_Array; //Array of order id's to be used below.
var pData = new Personnel;
{
Personnel_Id = row.Key,
Personnel_Name = row.Name
};
if (pData.Personnel_Id == 0) //ADD
{
foreach (int Id in Order_Array)
{
pData.Orders.Add(new Order() { Order_Id = Id });
}
context.Personnel.AddObject(cvData);
foreach (var j in pData.Orders)
{
context.ObjectStateManager.ChangeObjectState(j, EntityState.Unchanged);
}
}
else //Doesn't error out, but does not work either:
{
pData.Orders.Clear();
foreach (int Id in Order_Array)
{
pData.Orders.Add(new Order() { Order_Id = Id });
}
context.Personnel.Attach(cvData);
context.ObjectStateManager.ChangeObjectState(pData, EntityState.Modified);
}
context.SaveChanges();
}
}
}
return "ok";
編集: ADD が動作するようになりましたが、今はUPDATEに行き詰まっています。上記の修正されたコードを参照してください。