.net - 在哪里使用工作单元模式验证我的实体?

标签 .net asp.net-mvc entity-framework unit-of-work

我总是在 UnitOfWork.Commit() 方法中看到 DbContext.SaveChanges()。但是,当我从 DbContext 获取实体并更改属性时,UnitOfWork.Commit() 会将新实体值写回我的数据库,而无需任何验证。

我将避免使用集成的 DbContext.Configuration.ValidateOnSaveEnabled = true;

目前我不使用 UnitOfWork-Pattern。我在我的服务类中对每个插入/更新操作运行验证,如果验证成功,存储库调用 DbContext.SaveChanges()

如何避免使用无效实体的 UnitOfWork.Commit()? 如果我在 ASP.NET MVC Controller 中使用 UnitOfWork 对象,正如它在这个答案中所建议的那样: Where does Unit Of Work belong w/ EF4, IoC (Unity), and Repository? ...不能保证验证已完成。

最佳答案

你基本上就在那里。当您使用 UoW 时,您的存储库更新将独立于对数据存储的任何提交。只需将 DbContext.SaveChanges() 移动到新的 UnitOfWork.Commit() 方法(或直接使用 DbContext.SaveChanges() 作为您的commit 方法),并将验证逻辑留在存储库的 Insert/Update 方法中。

using (var uow = new UnitOfWork())
{
  var e1 = new Entity() { ... };
  repo.Insert(e1);  // validates e1 immediately

  var e2 = GetExistingEntity();
  e2.Value = 42;
  repo.Update(e2);  // validates e2 immediately
}

关于.net - 在哪里使用工作单元模式验证我的实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11508338/

相关文章:

asp.net-mvc - 我如何对这种方法进行单元测试?

c# - 使用 Entity Framework 向下转型

c# - .Net 发布生成的 exe 的内容是什么?

.net - 优秀的 .Net 远程教程/指南

ajax - 如何从 ajax 操作返回错误信息(作为错误!)?

c# - 随机错误 内存流不可扩展

c# - 如何在Microsoft实体模型框架中执行Sql原始查询

c# - 从 Excel 导入到 MVC3 应用程序的最快方法

c# - 在 OpenCVSharp 中水平翻转图像

c# - 使用 .NET 在同一个进程中执行多个命令行