我在asp.net mvc-3应用程序中使用Linq-2-Sql作为ORM。首先来看看表格...... 这是用于编辑批次信息的主要详细信息表单。主要部分(批处理表)包括BatchNo,SKUTitle,StageID和Date字段。详细信息部分(BatchDetail)包含字段PackingInstruction,ExpectedYield,Units和TargetDate。我已设法将此信息保存在创建方案中的单页上,如
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中完成此操作而不必不必要的删除吗?
编辑:我一直在研究System.Data.Linq.Table
的附加方法,但似乎无法弄明白
答案 0 :(得分:0)
在MVC音乐商店演示中,有一小部分内容涉及使用JQuery AJAX调用删除控制器操作从购物车中删除项目。该示例位于part 8 of this tutorial。
实际的AJAX调用说明大约是页面下方的3/4。如果您想快速搜索并找到它,那么该部分的标题是“使用jQuery进行Ajax更新”。