使用Linq-2-Sql编辑主详细记录

时间:2011-07-25 12:34:33

标签: asp.net-mvc entity-framework linq-to-sql asp.net-mvc-3 linq-to-entities

我在asp.net mvc-3应用程序中使用Linq-2-Sql作为ORM。首先来看看表格...... enter image description here 这是用于编辑批次信息的主要详细信息表单。主要部分(批处理表)包括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的附加方法,但似乎无法弄明白

1 个答案:

答案 0 :(得分:0)

在MVC音乐商店演示中,有一小部分内容涉及使用JQuery AJAX调用删除控制器操作从购物车中删除项目。该示例位于part 8 of this tutorial

实际的AJAX调用说明大约是页面下方的3/4。如果您想快速搜索并找到它,那么该部分的标题是“使用jQuery进行Ajax更新”。