我真的很努力地把我的头围绕在这些东西上。让我举个例子说明我在哪里挣扎。与DDD,存储库模式和相关领域模型苦苦挣扎
我使用Linq-2-Sql作为我的应用程序的DAL以及Rob Conery的MVC Storefront示例应用程序中使用的IRepository模式。
在我的域名中,我有一个客户模型,它有一组地址模型。在我的用户界面中有一个按钮,允许用户为客户添加新地址。这将打开一个地址编辑器,让他们填写所有信息。
接下来会发生什么?地址是否保存到数据库,然后添加到客户对象的列表中?它是否被添加到列表中,但在客户对象被保存之前不会更新?如果用户想要删除地址怎么办?我是否删除数据库中的地址,然后从列表中删除它?或者他们只是做出他们想要的所有删除/添加,并且我每次都从数据库中转储所有内容并使用Customer.Addresses集合中的任何内容进行更新?这里什么是正确的流程?
应该地址只能获得经过更新的存储库的收集调用是这样的:
public void AddAddressToCustomer(Customer c, Address a)
{
//validate and save address to db
//add the newly saved address to the Customer Object
}
帮助...
就这么你知道,DDD(Domain Model)和Active Record是竞争的设计模式。 Active Record直接映射到数据库并提供CRUD方法,而Domain Model与数据库无关并使用数据映射器映射到数据库表。 – 2009-02-04 14:32:07