在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个记录由于某种原因未能提交。 谢谢
答案 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。数据库将执行批量更新,您将获得更好的性能。