MVC在控制器中一次编辑多个记录的最佳方法是什么

时间:2014-08-12 09:50:28

标签: asp.net-mvc

在MVC中编辑多条记录的最佳做法是什么? 我现在在网上冲浪,但是找不到合适的答案。

现在我的解决方案在控制器中看起来像这样:

for (int i = 0; i < customer.Count();i++)
            {
                Guid id = Guid.NewGuid();
                id = new Guid(customer[i]);
                try
                {
                    CustomerProduct customerProduct = customerProductRepository.GetCustomerProductByCustomeridAndProductID(id,productID);


                    customerProductRepository.DbContext.BeginTransaction();

                    customerProduct.ProductVersion = productVersionRepository.Get(productVersionId);

                    customerProduct = customerProductRepository.SaveOrUpdate(customerProduct);
                    customerProductRepository.DbContext.CommitTransaction();
                    TempData["toastType"] = "success";
                    TempData["message"] = customerProduct.Customer.Name+" is been successful updated";

                 }
                catch
                {

                    TempData["toastType"] = "error";
                    TempData["message"] = "An Error occurred, Please try again later";
                    customerRepository.DbContext.RollbackTransaction();
                    return View(model);
                }
            }

有可能回滚10个交易吗?如果前5个提交它并且6个记录由于某种原因未能提交。 谢谢

1 个答案:

答案 0 :(得分:4)

CustomerProductRepository中有一个AddAll / UpdateAll方法,如下所示:

public void AddAll<T>(IEnumerable<T> items) where T : class
{
    Guard.ArgumentNotNull(items, "items");

    foreach (var item in items)
    {
        Set<T>().Add(item);
    }

    SaveChanges();
}

仅在成功添加所有项目时才会调用SaveChanges。数据库将执行批量更新,您将获得更好的性能。