在数据库和域层之间同步

本文关键字:之间 同步 数据库 | 更新日期: 2023-09-27 18:32:54

我有一个关于领域驱动设计的一般性问题。在我的代码中有一个地方,我的数据库表架构与它的域对象不同。

让我给出场景

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 来访问员工列表。

我想知道

  1. 如果这是一个很好的设计。领域驱动开发方面的专家有办法解决这一差距吗?

  2. 我可以通过继续这样的设计来预见问题。对映射强制执行测试会有所帮助吗?

在数据库和域层之间同步

我的代码中有一个地方,我的数据库表架构不是 与它的域对象相同。

欢迎使用对象关系阻抗不匹配:)

这是一个经典的问题,可以使用对象/关系映射框架来解决。

领域

驱动设计是一种领域优先的方法,出现这种不匹配是完全正常的。只需按照您认为合适的方式设计聚合和实体,而无需一开始担心数据库。然后创建关系模型。很可能它不会是表和实体之间的一对一匹配,这是需要ORM的地方。

我认为你的设计没有错。如果您选择两种不同类型的对象,我建议您使用Automapper来映射这两个对象。有关该的更多信息,请查看以下链接:

http://www.codeproject.com/Articles/61629/AutoMapper

并且:您应该始终使用单元测试来验证代码的功能!更好的是应用测试驱动开发,因为在那里你必须编写代码才能实现你的逻辑。但这是我的意见!

问候