领域逻辑与数据验证

2024-01-03

我正在忙着阅读并享受 Mark Seemann 所著的 .Net 中的依赖注入。

我很难解释确切的上下文,所以如果你熟悉这本书,请只关心这个问题。

我的问题与第 2 章第 49 页中的两个 Product 类有关。其中一个位于域层,一个位于数据访问层。据解释,数据访问层中的 Product 类是由 Linq to Entity 向导创建的。

我正在使用 Linq to SQL,并且我可以使用 Ling to SQL 属性来装饰我的模型类,这样我就不必拥有第二个类。例如。

[Table(Name="Customers")]
public class Customer
{
  [Column(IsPrimaryKey=true)]
  public string CustomerID;
  [Column]
  public string City;
}

然而,我觉得这是混合问题,它实际上将我的域层与 Linq to SQL 数据访问层紧密耦合。你同意这一点吗?

假设我为域和数据访问层创建了两个“客户”类。假设城市是必填字段。保存时需要检查这条规则。这应该在域层还是数据访问层或两者中完成?

谢谢,达林


然而,我觉得这是混合问题,它实际上将我的域层与 Linq to SQL 数据访问层紧密耦合。你同意这一点吗?

是的,会的。实体框架(代码优先)和 nhibernate 都可以使用单独的映射类,这将使您的模型干净,而不依赖于 OR/M。

旁注:域模型不应该有属性的公共设置器(在 DDD 中)。因为它有效地将模型逻辑移至模型外部。

假设我为域和数据访问层创建了两个“客户”类。假设城市是必填字段。保存时需要检查这条规则。这应该在域层还是数据访问层或两者中完成?

数据库实体应该只存在于存储库类中,因此不必验证它。正在保存的域模型应该已经具有正确的状态。

Example:

public class ArticleRepository
{
    public void Save(Article article)
    {
        // Article is already in a correct state
        // (thanks to no public setters)

        var dbEntity = new ArticleEntity();
        Mapper.Map(article, dbEntity);
        _dbContext.Save(dbEntity);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

领域逻辑与数据验证 的相关文章

  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 使用实体框架时是否应该使用部分类作为业务层?

    我正在开发一个使用实体框架的项目 使用EF生成的类的部分类作为业务层可以吗 我开始认为这就是 EF 的用途 我尝试使用 DTO 模式 很快意识到我只是创建了一堆映射类 这重复了我的工作 而且还导致更多的维护工作和额外的层 我想使用自我跟踪实
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • 取消引用指向结构体指针的指针

    gcc 4 7 2 c89 Hello 我试图取消引用指向结构体指针的指针 当我执行以下操作时 我收到此错误消息 LOG INFO CHANNEL ID d channel gt id 编译错误 request for member id
  • 连接黄瓜检查java中的场景失败

    当我正在阅读如何在失败时为黄瓜场景添加清理时 我在互联网上找到了这段代码 After do s if s failed If you are on an iOS Device driver quit sleep time for drive
  • 为什么我不能通过继承 OrderedDict 和 defaultdict 来创建默认的有序字典?

    我第一次尝试将两个词典的功能结合起来collectionsmodule 的作用是创建一个继承它们的类 from collections import OrderedDict defaultdict class DefaultOrderedD
  • 我可以对 WordPress.com 上托管的网站使用 REST API [已关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我在 WordPress com 上托管了一个博客 当我尝试制作一个GET请求检索帖子时我收到 未找到 html 页面 https alex
  • 如何在 React 项目的 axios 拦截器中添加全局加载/旋转效果

    我在 React 项目中使用 axios 进行 API 调用 我想在 axios 拦截器中的 api 调用的请求和响应之间全局添加加载或旋转效果 这是我的拦截器的代码 import Axios from axios Axios interc
  • 没有与 lambda 匹配的函数 std::forward

    考虑以下代码 其灵感来自 Barry 的回答this https stackoverflow com a 42036525 882932问题 Include include
  • 如何以编程方式将视图限制为 ConstraintLayout 中的父视图

    我想使用约束布局以编程方式创建 TextView 或任何其他视图 textView 在 XML 中看起来像这样
  • 空结构背后的目的?

    C 标准库中 auto ptr 的声明 namespace std template
  • IsDate数组公式

    刚刚注意到isDate不适用于arrayformula Case 想要过滤日期的所有值 使用公式 FILTER data ISDATE data 预期结果 8 28 2018 Got N A Question 为什么 其他检查工作在filt
  • Jenkins 管道将所有参数传递给下游作业

    我有一个名为的管道作业buildall看起来像这样 pipeline stages stage job1 build job job1 The buildalljob有25个参数 我想通过所有buildall的参数降至job1 有没有一种简
  • 在 WebView 中显示 URL

    在我的 JsonParsing 中 我从这个 json 中获取了 url 我需要像在 web 视图中一样显示该 Url 链接 我该怎么做 Code在这儿 TextView tv TextView findViewById R id text
  • iOS:MapView 注释未显示图钉

    由于某些奇怪的原因 viewForAnnotation 仅适用于 viewDidLoad 中设置的引脚 这是一个测试引脚 在其他地方加载的引脚在按下时不会被注释 我已经设置了代表 我认为这与mapView调用中的标识符有关 但我不确定如何解
  • Sprite 套件中的 iCarousel

    解释 我正在尝试构建一个类似于 Crossy Road 的角色选择菜单 如您所见here http www therockstargamers com wp content uploads 2015 04 crossy road chara
  • MVC Web API 绑定模型到派生类

    我正在研究如何将模型绑定到 MVC Web API 中的派生类 我遇到的问题是我认为我已经找到了大约 5 种方法 我所拥有的是 型号 gt 模型库 模型A 模型库 模型B 模型库 然后控制器容器该方法 Post ModelBase mode
  • XNA 的自动 XNB 序列化支持哪些类型?

    我已阅读 Shawn Harvgreave 关于自动序列化的博客文章和关于内容管道概述的 MSDN 文章 但我找不到支持的类型列表 引用MSDN 从 XNA Game Studio 3 1 开始 自定义数据的序列化 对于不支持的简单类型 X
  • 如何从 Rails 中的哈希列表中删除嵌套键

    我现在正在尝试几个小时来删除哈希列表的嵌套哈希键 我看到许多解决方案非嵌套哈希 如下所示 sample hash key1 gt value1 key2 gt value2 sample hash except key1 这导致 key2
  • 使用 web api HttpResponseMessage 输出图像

    我正在尝试使用以下代码从 asp net web api 输出图像 但响应正文长度始终为 0 public HttpResponseMessage GetImage HttpResponseMessage response new Http
  • Python对不同维度变量进行曲面拟合得到未知参数?

    我有一个包含 x 和 y 作为自变量的函数 我想将参数拟合到数据和函数并绘制曲面图 我看到如果变量有两个不同的维度 我可以使用np meshgrid x y 那么我如何找到参数a b c呢 我的代码如下所示 import matplotli
  • Python 中的分块矩阵赋值

    从这个mwe a np zeros 5 5 b np zeros 2 2 a np matrix a b np matrix b b 0 0 4 b 1 1 9 b 0 1 7 indice 2 3 1 c a indice indice
  • 领域逻辑与数据验证

    我正在忙着阅读并享受 Mark Seemann 所著的 Net 中的依赖注入 我很难解释确切的上下文 所以如果你熟悉这本书 请只关心这个问题 我的问题与第 2 章第 49 页中的两个 Product 类有关 其中一个位于域层 一个位于数据访