asp.net mvc-3アプリケーションでORMとしてLinq-2-Sqlを使用しています。最初にフォームを見てください。 これは、バッチ情報を編集するためのマスター詳細フォームです。マスターパート(バッチテーブル)には、BatchNo、SKUTitle、StageID、およびDateフィールドが含まれます。詳細部分(BatchDetail)には、PackingInstruction、ExpectedYield、UnitsおよびTargetDateの各フィールドがあります。この情報を作成シナリオのシングルページに保存することができましたLinq-2-Sqlを使用したマスター詳細レコードの編集
public ActionResult CreateBatch(Batch batch, BatchDetail detail)
{
batch.BatchDetails.AddRange(detail.ToList());
ctx.Batches.InsertOnSubmit(batch);
ctx.SubmitChanges();
}
編集シナリオはかなりトリッキーです。上記の図のように、ユーザーは新しいレコードを詳細に追加したり、既存のレコードを削除したり編集したりすることができ、データがコントローラに送信されるまでに、どのレコードが新しく追加されたか、削除されました。その結果、私は何かをする必要があります
public ActionResult EditBatch(int id, BatchDetail detail)
{
var batch = ctx.Batches.SingleOrDefault(x=>x.BatchID == id);
ctx.BatchDetails.DeleteAllOnSubmit(ctx.BatchDetails.ToList());
UpdateModel(batch);
batch.BatchDetails.AddRange(detail);
ctx.SubmitChanges();
}
私はこのシナリオでは、詳細レコードを削除するのは嫌いです。 Linq-2-Sqlには、同様のシナリオですべてのレコードを削除する方法がありますか?そうでない場合は、不要な削除をせずにEFでこれを達成できますか?
編集:私はjQueryのAJAXを使用して、ショッピングカートからアイテムを削除対象と小さな部分があるSystem.Data.Linq.Table
の方法を取り付けて研究してきたが、MVC Music Storeのデモでは何も