gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 02:47:28 29 4
gpt4 key购买 nike

我总是在 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com