- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我刚刚开始学习领域驱动设计,遇到了一些障碍。
我有一个多对多的关系,我正在尝试以 DDD 方式设计它。假设我有一个 Widget,它是我的聚合。小部件可以有一个选项列表,这些选项是描述小部件的值对象。
我认为存储库应该查询与小部件关联的值对象列表,并填充小部件上的选项属性,而不是在 EF 中创建多对多关系。
我的领域对象看起来像这样:
public class Widget{
public int Id{get;set;}
public string Name{get;set;}
public List<Option> Options{get;set;}
public int DefaultOptionId{get;set;}
}
/* Value Object aka Look Up*/
public class Option{
public int Id{get;set;}
public string Name{get;private set;}
}
数据库结构和数据:
Widget Table Data
ID: 1 , Name: Widget 1, DefaultOptionId: 2
ID: 2 , Name: Widget 2, DefaultOptionId: 3
Option Table
ID: 1 , Name: Option Name 1
ID: 2 , Name: Option Name 2
ID: 3 , Name: Option Name 3
ID: 4 , Name: Option Name 4
Relationship Table
WidgetId: 1 , OptionId: 2
WidgetId: 1 , OptionId: 3
WidgetId: 2 , OptionId: 2
WidgetId: 2 , OptionId: 3
WidgetId: 2 , OptionId: 4
最佳答案
您提出的解决方案( repo 选项列表作为值对象)很好。小部件不能更改选项值对象,因此共享引用对小部件没有影响。
重命名一个选项不会改变这个解决方案,因为小部件只会在下次被 repo 重新水合时选择重命名的选项。
“值对象”的概念与使用上下文有关:在小部件上下文中,Option 是不可变的。在某些其他上下文中(例如“选项”),它可能是可变的(因此您可以重命名选项)。
关于c# - 如何对可以属于多个聚合的 ValueObject 进行建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41626536/
在Java中,ValueObject的职责是什么?ValueObject导入LOGGER组件是否合理? 最佳答案 由于 VO 应该表示没有任何特定逻辑的纯值,因此它确实不应该打扰任何日志记录组件。 如
我有以下数据结构: [DataServiceEntity] public class User { public string RowKey { get; set; } public
我有以下数据结构: [DataServiceEntity] public class User { public string RowKey { get; set; } public
我有一个父子关系,其中父项有一个 ValueObject,我无法确定如何正确定义该关系。 为子/父关系添加迁移失败并出现错误... 实体类型“地址”需要定义主键。 以下是当前的代码结构。 public
在 2014 年结束时,我认为有一个简单的问题。我想更多地使用“DDD”,目前我正在尝试尝试各种用例以了解有关 DDD 的更多信息。 我当前的用例如下: 我们有一个新的数据库架构,它使用我们公司的经典
我刚刚开始学习领域驱动设计,遇到了一些障碍。 我有一个多对多的关系,我正在尝试以 DDD 方式设计它。假设我有一个 Widget,它是我的聚合。小部件可以有一个选项列表,这些选项是描述小部件的值对象。
我正在尝试结合一些技术。 永远不要创建无效的 ValueObject 似乎是一种很好的做法。因此,只要提供的内容不足以创建有效的 ValueObject,ValueObject 构造函数就会失败。在我
您是否总是创建这两个抽象基类作为 DDD 中任何新项目的基础? 我读过 Entity 应该有两件事。首先,一个身份属性,可能是一个泛型类型。其次,一个 Equals() 方法,用于确定它是否与另一个实
我有一个 IDictionary 的映射属性,这是映射: HasMany(mq => mq.StocksLocation) .KeyColumn("IDProduct")
我有一个项目,其中有一个“习惯”表,该表需要一个播种机来为其提供数据,简单地说,它是一个带有原始数据的播种机,我需要对其进行 cooking ,换句话说,我需要像这样处理... public func
我有一个项目,其中有一个“习惯”表,该表需要一个播种机来为其提供数据,简单地说,它是一个带有原始数据的播种机,我需要对其进行 cooking ,换句话说,我需要像这样处理... public func
我开始玩领域驱动设计,对ValueObject有疑问: 它们可以包含不变量或其他规范吗? 考虑一个不可变的 ValueObject : ValueObject ( prop integer: In
我开始玩领域驱动设计,对ValueObject有疑问: 它们可以包含不变量或其他规范吗? 考虑一个不可变的 ValueObject : ValueObject ( prop integer: In
在我的 Hibernate 应用程序中,我正在使用创建一个 ValueObject 类 @Entity @Table(name="user") public class UserVO{ @Id
在我的 Java 应用程序中创建值对象(Java Bean),其中有一个字段 @Entity @Table(name="EC_TIMETABLE") public class Timetabl
在对具有实体和值对象的域进行建模时,将“基本”值类型与定义好的值对象一起创建是否有意义? 例如,我可以有一个值对象 EmailAddress 或 ProductName。但是仅将 String 作为值
尝试使用 ASP.NET 样板和 Entity Framework 实现 DDD 员工对象 public class Employee : Entity { public virtual str
在领域驱动设计中,我们介绍了 ValueObject 的概念,其中对象不携带身份。 微软有provided an implementation of their ValueObject在他们的微服务系
Javers 可以比较两个集合来识别旧集合中每个对应对象在新集合中的对象中发生的变化吗? 实现是否依赖值对象类的equals方法?我为我的值对象实现了 equals 方法,但它似乎仍然将它们视为不同的
考虑这些简单的类。它们属于具有领域驱动设计 (DDD) 原则的简单应用程序,因此每个 Entity 和 ValueObject 通过构造函数接收其属性值,同时隐藏默认的无参数构造函数。属性也将是只读的
我是一名优秀的程序员,十分优秀!