领域驱动设计和实体框架 4.1(代码优先)

2023-12-24

我目前正在学习领域驱动设计开发方法,并使用 Tim McCarthy 编写的《.NET 领域驱动设计与 C#》一书作为指南。

这本书确实很有帮助,但在使用实体框架时我变得有点困惑,特别是 4.1 中提供的代码优先方法。

根据书中的示例,分层架构方法应该意味着基础设施层看不到模型/领域。

那么,在数据库上下文类中映射我的域 poco 的最佳方法是什么(我假设)应该位于基础设施层,而不违反分层方法?

我的想法很可能完全错误,所以请让我知道,因为我仍在学习!

非常感谢 :)

Adam


如今大多数 ORM,例如 EF 4.1 和 Nhibernate(流畅的 Nhibenrate 插件)都可以通过映射类描述从 POCO 到 Db 上下文的映射。这些映射类最好放置在基础设施数据库项目中,也许与 ORM 会话特定的类一起放置。

然后,您的 POCO 域类应该放置在一个域项目中,该项目不应该有任何对其他组件或项目的引用。但是基础设施数据库项目应该引用域,以便您的映射类可以描述如何从持久状态加载 POCO。

使用大量依赖注入以及良好且可靠的 IoC 框架(温莎城堡...)。这将帮助你放松一些。最好依赖抽象/接口而不是实现。

这是基础知识http://www.infoq.com/articles/ddd-in-practice http://www.infoq.com/articles/ddd-in-practice

但幸运的是,您决定采用“代码优先”方法。如果可以的话,我真的推荐这种方法。但有时当旧的遗留系统干扰时,事情就没那么容易了。

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

领域驱动设计和实体框架 4.1(代码优先) 的相关文章

随机推荐

  • 如何在 Nest.js 中使用查询参数?

    我是 Nest js 的新手 我的代码如下 Get findByFilter params async findByFilter Query query Promise
  • git-svn“找不到 revmap”-这是什么意思?

    跑步时git svn clone并且经常在随后的过程中git svn fetch我在许多文件夹中收到此消息 Couldn t find revmap for
  • 将 HTML 元素放入原型链中?

    我想创建一个对象 通过将元素放入对象的原型链中来扩展 HTML 元素的功能 我想我可以用如下的方法来做到这一点 var el document createElement div el innerHTML foo var wrapper O
  • 将变量从一个 POJO 复制到另一个 POJO

    我有一个 POJO A 它有 30 多个变量 我有另一个 POJO B 大多数变量与 A 中的相同 例如 A 有一个变量 var1 作为 LocalDate 列表 B 有一个同名 var1 的属性 但作为 Long 列表 长日期值 现在 我
  • 获取字体中的所有可用字符

    我正在使用 Swift 3 开发 iOS 应用程序 在此应用程序中 我列出了所有可用的字体 系统提供 但我也想列出它们的所有可用字符 例如 我正在使用 Font Awesome 我希望用户能够从列表中选择任何字符 符号 我怎样才能做到这一点
  • 通过环境变量指定 @CrossOrigin 来源

    是否可以指定来源 CrossOrigin通过环境变量进行注释 我想这样做 以便我可以使用相同的代码库进行 uat staging 生产 我希望我的 uat staging 环境可以通过 localhost 访问进行测试 但我的生产环境只接受
  • (为什么).Net 中的反射如此昂贵? [复制]

    这个问题在这里已经有答案了 可能的重复 反思的 成本 是多少 https stackoverflow com questions 224232 what is the cost of reflection 有没有人对普遍接受的口头禅有一个很
  • Node js:libuv 线程池如何工作?

    我正在学习 Node Js 我了解 Node js 的核心是基于事件循环的反应器模式 当任何事件发生时 它都会进入事件队列 然后在运行任务结束后被堆栈拾取 如果事件是非阻塞事件 则会发生这种情况 但如果它是阻塞请求 则事件循环将其传递给来自
  • 如何使用复选框在 mySQL 中输入 true (1) 或 false (0) 并在 php / html 表单中显示为选中状态?

    我有一个带有字段名称的表Shift Trig这意味着有一个true or false以 a 的形式输入的值1 or 0 我有一个 html 表单 每行都有一个复选框 选中时应输入1进入现场 我还希望该复选框能够反映存储在中的当前值Shift
  • 删除 Three.js 中相邻的面

    我正在尝试优化一个场景 其中我根据图像的像素数据渲染立方体 http jsfiddle net majman 4sukB http jsfiddle net majman 4sukB 该代码只是检查图像中的每个像素并相应地创建和定位立方体网
  • 如何将程序加载到内存中与预期地址不同的地址?

    通常 用户程序二进制文件将加载到低地址 通常约为0x400000 在程序地址空间中 该空间将在elf二进制 对于 Linux 我们能否强制用户二进制文件加载到高地址 可能在2GB地址范围 其中libc或加载其他此类库 我尝试在网上寻找解决方
  • 创建 CSS Sprite :hover 滚动图像链接

    我有一个问题希望能得到答案 我正在尝试从头开始创建一个网站 不使用 Dreamweaver Expression Web 等 我只使用记事本 我想要完成的是在标签内创建两个导航链接作为翻转 CSS 精灵图像 使用伪类元素 hover 我稍后
  • mex 将向量从 c++ 从 mex 函数传输到 matlab

    我试图通过用 C 编写一些函数并使用 mex 接口来集成它们来加速我的 Matlab 程序 我在 C 向量中得到了结果 我想将它转移到 MATLAB 中的数组 我知道我应该重定向 plhs 0 to the vector 当我完成类似的事情
  • 如何在tensorflow中读取.mat文件格式?

    Tensorflow 中的 Reader 共有三个版本 tf TFRecordReader 用于读取TFRecord文件 tf FixedLengthRecordReader 用于读取二进制文件 tf TextLineReader 用于读取
  • Qt Creator - 如何启用浮动 IDE 布局?

    我是长期用户内河码头 C Builder窥视Qt创建者 版本 4 4 0 目前看来非常适合所有类型的 C 开发任务 因此可能非常高效 不幸的是有一个major与相比 缺点显着减慢了我的速度C Builder 我找不到任何可以重新排列的设置Q
  • SearchControls.setTimeLimit() 是否处理读取超时?

    我遇到一个问题LdapContext search 针对目录有时会永远挂起 我尝试提供一个SearchControls我调用的对象setTimeLimit 10000 但问题仍然发生 鉴于此 我现在的想法是 SearchControls 对
  • UNIX 僵尸和守护进程

    据我所知 当进程不能很好地清理 其资源没有被回收 收获 时 就会创建僵尸 调用 fork 创建新进程后 父进程应始终对该进程调用 waitpid 来清理它 我还了解到 守护进程是通过分叉一个本身由 fork 创建的子进程 然后让该子进程死亡
  • 如何通过拨动开关应用设置? [复制]

    这个问题在这里已经有答案了 可能的重复 谁能告诉我如何使用开关 https stackoverflow com questions 5639372 can anyone tell me how to use switch 嗨 我有两个视图
  • CSS线性渐变不准确?

    对于我的应用程序 我希望制作一个可以提供 0 度到 360 度之间任何色调的调色板 我目前正在使用此代码来制作调色板 我们以色调 120 纯绿色 为例 function drawPalette hue var ctx document qu
  • 领域驱动设计和实体框架 4.1(代码优先)

    我目前正在学习领域驱动设计开发方法 并使用 Tim McCarthy 编写的 NET 领域驱动设计与 C 一书作为指南 这本书确实很有帮助 但在使用实体框架时我变得有点困惑 特别是 4 1 中提供的代码优先方法 根据书中的示例 分层架构方法