我对域驱动设计有一般性质疑。我的代码中有一个位置,我的数据库表模式与它的域对象不同。
让我给出方案
Database table -
EmployeeDepartment table has columns
1. DepartmentKey - (Integer Type)
2. DepartmentName - (Varchar)
3. FacilityName - (Varchar)
The C# domain class for it has the following
1. Key (Integer)
2. DepartmentName (String)
3. FacilityName (Sting)
4. Employees (IList<Employees>)
在这种情况下,同一实体的数据库设计和域设计之间存在差距。在数据库中 - 我使用桥接表来访问组中的员工列表。但在C#代码中,我使用IList来访问Employees列表。
我想知道
如果这是一个好的设计。领域驱动开发方面的专家是否可以解决这个问题呢?
我可以通过这样的设计来预见问题。是否会强制执行映射测试?
答案 0 :(得分:1)
我的代码中有一个地方,我的数据库表架构不是 与它的域对象相同。
欢迎使用对象关系impedance mismatch:)
这是一个可以使用对象/关系映射框架解决的经典问题。
域驱动设计是一种以域为先的方法,这种不匹配是完全正常的。只需设计您认为合适的聚合和实体,而不必担心数据库。然后创建关系模型。有可能它不是表和实体之间的一对一匹配,这是需要ORM的地方。
答案 1 :(得分:0)
我认为你的设计没有任何问题。如果您选择两种不同类型的对象,我建议您使用Automapper来映射这两个对象。有关该更多信息,请查看以下链接:
http://www.codeproject.com/Articles/61629/AutoMapper
AND:您应该始终使用单元测试来验证代码的功能!更好的方法是应用测试驱动开发,因为你必须编写代码才能实现逻辑。但这是我的看法!
问候