gpt4 book ai didi

asp.net-mvc - 数据层或域层的规则验证?

转载 作者:行者123 更新时间:2023-12-04 21:00:16 25 4
gpt4 key购买 nike

我一直在阅读 Pro ASP.NET MVC Framework,Steven Sanderson,在第 11 章中讨论了数据验证。

在第 390 页,我们看到将验证逻辑移动到您的模型层部分。在本节中,我们在第 392 页看到了一些代码,展示了如何实现验证。

该代码实现了 GetRuleViolations()方法和 Save()方法使用它来抛出 RuleException如果有什么不好。

然而,在我看来,有 域层和数据访问层之间没有区别 ,这里是代码:

public void Save() {
var errors = GetRuleViolations();
if (errors.Count > 0)
throw new RuleException(errors);

// Todo: Now actually save to the database or whatever
}
private NameValueCollection GetRuleViolations() {
// validations...
}

在我正在工作的一个项目中,我有一个 领域层 ,尽可能地忽略持久性,以及 数据访问层 ,通过 NHibernate 实现数据访问,并实现在域层中定义接口(interface)的存储库。

如果我按照作者在这里的建议实现验证规则,在“ Save()”方法上,它们将继续我的数据访问层,尽管,至少我认为,它们应该驻留在域模型上!

所以,我的问题是 : 创建 时分层应用 , 带有 领域层实现域实体并将接口(interface)暴露给存储库(持久性无知), 数据访问层从域层实现存储库并实现所有数据访问代码, 验证规则应该放在哪里 ?

我的主要(或至少是第一个)界面将是一个 ASP.NET MVC 应用程序,如果这可能会改变任何东西的话。

谢谢。

最佳答案

在 MVC 架构中,M(模型)包括领域层和数据访问层。所以桑德森的例子没有错。

也就是说,当您使用这两个层(而不是只有一个)实现域模型时,验证逻辑应该转到域层以增加域对象的凝聚力并避免验证逻辑在许多地方重复(例如,在每个具体的存储库)。

关于asp.net-mvc - 数据层或域层的规则验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1394435/

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