到目前为止,我一直在我的所有 c# 数据库驱动应用程序中使用活动记录。但是现在我的应用程序需要将我的持久性代码从我的业务对象中分离出来。我已经阅读了很多关于 Martin Fowler 的数据映射模式的帖子,但我对这种模式的了解仍然非常有限。
让我们使用以下示例:
如果我有 2 个表 - Customer 和 CustomerParameters。CustomerParameters 表包含用于创建新客户的默认客户值。
然后我必须创建一个CustomersMapper 类来处理所有的Customer 持久性。然后,我的 Customer 和 CustomersList 类将与此映射器类协作以保存客户数据。
我有以下问题:
如何在不违反某些业务规则的情况下将原始数据传输到我的客户类和从我的客户类到映射器?DTO?
在我的 Mapper 类中使用 SaveAll 和 LoadAll 方法来更新和加载多个客户的数据是否可以接受?如果是这样,在 SaveAll 的情况下,映射器如何知道何时更新或插入数据?
Customer 映射器类是否也负责从 CustomerParameters 表中检索默认值,还是创建一个 CustomerParameters 映射器会更好?
AO/R 映射器工具实际上并不在这里。我使用的数据库是事务性的,需要我编写自己的映射器模式。
任何想法和意见将不胜感激。