domain-driven-design相关内容
我想使用DDD方法来创建域模型。我的理解是,在有限制的上下文中,只有该上下文所需的数据才应该使用该上下文的普遍语言提供。 假设我在命名空间BuyerContext中有一个Buyer类,在命名空间SellerContext中有一个Seller类。最后,这两个域类都应该映射到数据库的Users表。为此我使用EF Core 2.1。 一个域类可能包含不属于另一个域类的字段/属性,如Buyer.C
..
在Vaughn Vernon的“实现域驱动的设计”一书中,他使用了名为ConcurrencySafeEntity的超级类型,但是找不到关于这个类的确切用途的具体解释,请在这方面有任何解释 推荐答案 ConcurrencySafeEntity类是一个Layer Supertype类,它可以避免需要实现optimistic locking以防止并发问题的实体的代码重复。
..
我有一些实体,我正在尝试遵循领域驱动设计实践来识别聚合。不知何故,我无法这样做,因为我要么打破了实体不允许引用其他聚合的非根实体的规则,要么根本无法形成聚合。 我有以下实体:组织、JobOffer、候选人和JobApplication。 组织创建JobOffer,但可能只有有限数量的活动JobOffer。 候选人创建职务申请,但可能只有有限数量的活动职务申请。 JobApplica
..
因此,我决定学习DDD,因为它似乎可以解决我一直面临的一些架构问题。虽然有很多视频和示例博客,但我还没有遇到一个可以指导我解决以下场景的: 假设我有一个实体 public class EventOrganizer : IEntity { public Guid Id { get; } public string Name { get; } public Ph
..
我正在使用DDD。我有一个类Product,它是聚合根。 public class Product : IAggregateRoot { public virtual ICollection Comments { get; set; } public void AddComment(Comment comment) { Commen
..
假设我们有两个实体,EntityA和EntityB。这两个实体都有一个存储库来查询数据库,EntityARepository和EntityBRepository。它们也都有服务,EntityAService和EntityBService。 现在EntityBService中有一个方法,也需要使用EntityA。执行此操作的正确方法是什么? EntityBService是否应直接使用En
..
如果我有一个Order类作为聚合根和1000个行项目。 如何仅加载1000个行项目中的一个?据我所知,行项目只能通过Order类访问,并且具有“本地”标识。我是否仍要在OrderRepository中创建类似“GetLineItemById”的存储库方法? 编辑以评论答案: 目前我认为有一个一成不变的孩子是不合理的。如果我有一个具有多个地址、合同和更多子集合的Customer类,该怎么
..
我正在考虑为我的 ASP.NET MVC 网站应用 CQS,但这是一件非常简单的事情.我不是指 CQRS,因为我想对查询和命令部分使用相同的数据源,所以我不需要事件溯源和其他更复杂的模式. 所以,我的想法是: 查询和命令部分使用同一个数据库 对于查询部分,通过实体框架和WCF数据服务暴露数据库视图,让具体的视图返回给客户端,查询数据变得非常容易 对于命令部分,使用实体框架和单向WC
..
为了利用 Jdk 8 的 java.util.stream 中包含的各种查询方法,我试图设计与 * 有关系的领域模型多重性(具有零个或多个实例)返回 Stream,而不是 Iterable 或 Iterator. 我怀疑 Stream 与 Iterator 相比是否会产生任何额外的开销? 那么,使用 Stream 破坏我的域模型有什么缺点吗? 或者,我应该始终返
..
我首先使用实体框架代码实现 DDD.My Domain Model 保持不变,没有任何映射层. 我遵循 Tech-Ed 期间建议的方法朱莉·勒曼.每个有界上下文映射到同一数据库中的不同模式. 如果同一个实体说,客户出现在不同的有界上下文中我们如何保持客户实体数据的一致性? 解决方案 只有一个有界上下文将是 您的实体的记录系统.如果您无法仅在其他 BC 中使用 Id,则可以将
..
我正在使用存储库模式来提供对我的聚合的访问和保存. 问题在于更新由实体关系组成的聚合. 以Order和OrderItem的关系为例.聚合根是 Order,它管理自己的 OrderItem 集合.因此,OrderRepository 将负责更新整个聚合(不会有 OrderItemRepository). 使用 Entity Framework 6 处理数据持久性. 更新存储库
..
我正在寻找适用于 Java 的完整堆栈框架(从持久性到视图生成 (CRUD)).我没有使用 Rails 风格框架(如 Grails)的经验,但我经常使用 Hibernate、Struts、Spring ... 我更喜欢一个框架,它可以让您以更少的努力自然地修改业务领域设计(即编写 sql 查询来修改表和约束、更改视图页面等......).我正在寻找有关此主题的一些信息,例如,我看到了 Nak
..
我正在寻找一些带有一组合理单元测试的深入的端到端 CQRS 示例. 另外,如果有人也知道一些 CQRS 截屏视频,那将非常方便. 这些例子我已经知道了 CQRS 信息 超级简单CQRS 解决方案 这里有一个实现 MarkNijhof. 但在阅读了 CQRS 信息网站上的文档后,我最喜欢的资源是 Think Before Coding 查看帖子标签.(http://
..
我正在寻找一种从 Doctrine 2 中的域对象返回不可变集合的方法.让我们从 doc: class User{//...公共函数 getGroups(){返回 $this->groups;}}//...$user = 新用户();$user->getGroups()->add($group); 从 DDD 的角度来看,如果 User 是聚合根,那么我们更喜欢: $user = new U
..
我正在研究 DDD 和事件源中的编程. 我看到一个示例,当调用域逻辑时(例如 Order.placeOrder()),它会发布一个事件(例如 OrderPlaced).并且该事件将作为事件存储发送到 MQ. 领域逻辑(Order.placeOrder())应该是一个原子API,如果使用Spring作为事务管理器,它应该有@Transactional注解.p> 现在我的问题是:
..
我有以下存储库模式.要求是“查找所有者名为 Lijo 的所有帐户".所以,我需要编写一个 FindAll 函数.这个函数怎么写? 约束条件是: 1) 客户端“BankAccountService"不应使用来自“DBML_Project"的类. 2) 我们不应该使用 GetAll 方法来收回完整的帐户列表,然后进行过滤. 注意:我在解决这个问题时遇到了这个问题 多态:ORM
..
我有一个使用 LINQ to SQL 实现的存储库.虽然我没有数据库,但我需要进行单元测试.如何为 FreezeAllAccountsForUser 方法编写 UT?你能展示一个使用手动模拟的例子吗? 注意:域对象中使用了继承映射 注意:单元测试将使用 Visual Studio Team Test 完成 来自@StuperUser 的评论.单元测试涉及将代码与其交互的其他对象完
..
我想创建一个 DDD 存储库,该存储库返回与 Linq 到 SQL 基础类匹配的 IQueryable 实体,减去任何关系.我可以轻松地返回实体减去与 Linq select new {field, field, ... } 投影的关系.如何对存储库实体类进行编码?我如何从具有存储库类而不是 Linq 到 SQL 类的存储库中返回一个对象,并且仍然使用 Linq 选择中的多个实体填充它?我将如何在
..
我正在研究 DDD 和事件源中的编程. 我看到一个例子,当一个域逻辑被调用时(例如 Order.placeOrder()),它会发布一个事件(例如 OrderPlaced).并且该事件将作为事件存储发送到 MQ. 域逻辑(Order.placeOrder())应该是一个原子API,如果使用Spring作为事务管理器,它应该有@Transactional注解.> 现在我的问题是:
..
我只是想知道如何最好地处理跨多个服务层的事务.服务层使用 ORM 来存储和检索数据库.是否应该在各个服务层中了解和处理事务?还是应该由另一层处理? 例如:我为用户和客户提供两个服务层.我想: 1) 创建并保存一个新客户端 2) 创建并保存一个新用户 3) 将该用户分配给客户端 所有在一个事务中. 一个简单的例子可能如下所示: $userManagementServic
..