问题标签 [domain-model]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xml - 如何使用实体框架工具自动生成领域模型和 XML 映射?
我有一个数据模型(.edmx 文件),如何使用该文件通过实体框架工具自动生成域模型和 XML 映射?
域模型:由客户端应用程序中的数据访问层组件使用的域模型。
XML MAP:数据结构的 XML/XSD 表示。
java - 什么是 Java 域模型?
我正在研究一本 Spring 书籍,他们提到了 Java 域模型。
那是什么?
asp.net-mvc - 这个特定的服务类在我的域中应该是什么样的?
我来自一个 WebForms 世界,其中所有逻辑都位于 aspx 页面的代码隐藏中。在阅读了几本关于 ASP.NET MVC 的书籍、听了一些播客并在 Tekpub 上观看了一些视频之后,我决定是时候以不同的方式处理事情了。
不幸的是,我已经被卡住了。
我正在尝试构建某种小型和基本的 CMS,我可以在其中添加多个网站。
我知道我应该让我的控制器保持精简,所以我想我应该使用某种服务类(我们称之为 WebsiteService)来做到这一点。我正在使用实体框架进行数据访问,并且我的视图都使用特定的视图模型。当我创建或编辑网站时,应该发生以下四件事:
- 验证输入
- 将有关网站的信息添加到数据库(如果是编辑,则更新信息)
- 在磁盘上创建一个目录(如果是编辑,可能重命名该目录)
- 将主机标头添加到 IIS 网站(如果是编辑,则可以删除旧的主机标头和新的主机标头)
基本上,我猜 WebsiteService 应该执行更高级的验证、写入数据库、创建/编辑目录、添加/删除主机头并向控制器返回一些内容以指示它是否成功。
这门课应该是什么样子的?我有几个问题我不知道答案。
- WebsiteService 是否也应该将 CreateWebsite ViewModel 转换为实际的 Website 类,还是应该做其他事情以便 WebsiteService 接受实际的 Website 对象?
- 基本输入验证是通过使用 ViewModel 上的 Validation 属性来完成的。还应该进行更广泛的验证(“数据库中是否已经存在具有此域名的网站?”)。WebsiteService 也应该这样做吗?
- 所有 3 个步骤(保存到数据库、创建目录、将主机头添加到 IIS)都应该在一个公共方法(
WebsiteService.SaveWebsite(ViewModels.CreateWebsite website)
)中完成,还是应该提供控制器必须调用的单独方法?(我猜不是因为我认为调用顺序很重要。)
.net - 领域建模工具建议 - 跨项目关系和继承
我们正在寻找一个 ORM/域建模工具,该工具将允许我们跨多个项目/程序集生成多个相关的域模型,这些项目/程序集以“数据库优先”的方法从我们的 MSSQL 数据库生成。我们需要一些帮助来确定哪些工具可以满足我们的需求。
要求是:
跨项目关系
- 我们的域被分成许多模块,并且对于每个客户(我们向其提供源代码)我们不使用所有模块,因此我们希望“拔掉”他们不需要查看或访问的所有逻辑.
- 例如,我们想在它自己的通用程序集中存储共享数据(主要是通用查找信息)。
- 我们不需要模型之间的双向关系(因为这会导致循环引用)。只会生成关系的子端。
跨项目继承
- 与上面类似,我们希望能够将通用功能抽象为一个域模型中的基类并继承它们。
- 注意:域之间的继承链接将受到限制,每个子域只有一个或两个。
- 注意:这无关紧要,但我们使用“每个类型的表”或“类表继承”来建模我们在关系(DB)模式中的继承
生成的类是:
- 标有 DataContract/DataMember 属性
- 通知属性更改(通过 INotifyPropertyChanged 实现)
- 具有部分 On*PropertyName*Changed() 方法(例如,根据 Linq to SQL 和实体框架生成的对象)
- (理想,但不是必需的)相关集合类型应实现 INotifyCollectionChanged。
任何支持(或有支持的变通方法)这些标准的 ORM 工具的任何反馈都将不胜感激!
注意:我们看过的工具(但这并不能完全排除它们):
- LightSpeed(可爱,但不支持轻松跨项目继承)。
- LLBLGen(复杂且包罗万象,但在使用
AsSeparateProjects
模式进行分组时,它似乎不支持跨模型关系,更不用说继承了)。 - 实体框架(我刚刚迷路了......将域拆分为多个模型时的设计师故事不是很好)。
asp.net-mvc - TDD - 我应该在我的域模型上测试数据库约束吗?
我应该在我的域对象中测试数据库约束吗?例如,如果数据库中的字段是 varchar(500) 并且是必需的,我是否应该在我的代码中对此进行测试?或者我应该只依靠try/catch。
这是一个相当大的工作开销——如果可以避免的话。
IE
.net - 我应该在我的域模型中使用 System.Net.Mail.MailAddress,还是只使用字符串?
正如这个问题中所涵盖的那样,System.Uri
是反映我对 URI 的意图的好选择。但是电子邮件地址呢?
它似乎不那么明确,因为MailAddress
它的属性中有额外的信息,DisplayName
不是很合适。
nhibernate - ORM 和多对多关系
这或多或少是一个一般性问题,而不是任何特定的 ORM 或语言:无论您的 ORM 偏好如何,都会出现这个问题。
映射多对多关系时,可以隐藏中间表或使中间表成为模型的一部分。如果中间表有超出关系的有价值数据,如何处理映射?
考虑下表:
作为一名程序员,我真的希望能够做到:
比
一方面,表 CaseWorkerCases 包含有用的数据,隐藏中间表使得访问该数据不太方便。另一方面,必须在中间表中导航会使访问案例的常见任务看起来很尴尬。
我认为一种解决方案可能是在模型中公开中间表,然后为 CaseWork 对象提供一个可以工作的包装器属性。就像是:
但这似乎也是错误的。
language-agnostic - 这样的类型的概念是否有名称
我有一个使用来自各种域实体的信息构建的类型。
类型本身之所以存在,是因为在系统的某些上下文中,从为该类型提供信息的大型复杂遗留类型中抽象出来是有用且有意义的。它公开了用于实例化它的类型字段的子集,此外它还包含一些自己的功能。
该类型有它自己的服务,提供一个创建方法,该方法在底层协调构成该类型实例的域实体的创建和持久性。
这种类型的概念有名称吗?
它肯定是某种聚合。它当然是一种领域模型,但它是其他领域模型的外观。
在新建系统中,我怀疑对这种类型的需求会受到限制,但我发现它在处理不灵活的遗留代码库时很有用。
c# - 关于DI的问题以及如何解决一些问题
我是依赖注入的新手。我从来没有使用过,也从来没有完全理解过它到底是什么,但是在我最后一次攻击这个话题之后,我发现这是一种解耦对象及其依赖项的方法,一旦它们不负责实例化它的具体版本不再依赖,因为现在容器将为我们完成它并将准备好的对象交付到我们手中。
现在的重点是;“我什么时候应该使用它?”,总是???实际上,由于我是新手,甚至从未见过使用这种模式的项目,我无法理解我应该如何将它应用到我的域对象!在我看来,我将永远不会实例化我的对象,容器将永远为我做这件事,但随之而来的是一些疑问......
1) 例如,它的部分依赖关系来自 UI 的对象呢?
假设我从 UI 中获取用户名,那么容器如何知道它并仍然为我提供这个对象?
2)我面临的其他情况;如果一个依赖现在是一个已经实例化的对象,比如说......一个 SINGLETON 对象,例如。我看到了有关注入依赖项生命周期的设置(我在谈论 Spring.NET,例如 http 请求范围)...但是,请求和其他与 Web 相关的东西都在我的表示层上,所以我怎么能在不破坏任何设计规则的情况下链接我的表示层和我的域层(因为我的域应该完全不知道它在哪里被消耗,不具有层依赖性等)
我渴望听到你们的消息。非常感谢。
domain-driven-design - 域模型应该耦合到什么程度?所有聚合根都应该是接口吗?
我们终于建立了一个领域模型。域模型包括用于将域对象松散耦合到持久性的接口。然而,我想知道域模型对象应该如何相互耦合。
Order是指向Customer还是ICustomer ?
这篇文章提到了积极解耦对象的问题,并且似乎不鼓励“过度使用 [接口]”。但是,除非我可以模拟它们所依赖的其他实体,否则我看不到如何真正对我的域实体进行单元测试,这需要松散耦合。
我也不确定想要一个可以交换部分的域模型有多现实。