2012-01-27 24 views
0

在我的項目中,我有一個Customers表,其中3個外鍵指向Addresses表。一個用於MainAddress,一個用於BillingAddress,一個用於ShippingAddress。存儲庫或業務層是否應更新所有表?

我正在使用CustomerRepository和AddressRepository的工作單元和存儲庫模式。

偶爾我需要自己處理地址,但大多數時候他們將成爲Customers域對象的一部分。

我的問題是一個最佳實踐設計問題。如果業務邏輯層負責調用CustomerRepository和AddressRepository以添加/更新,或者CustomerRepository應該足夠聰明以添加/更新地址,以便BLL只需調用「AddCustomer」或「EditCustomer」和所有地址表是否自動添加/更新?

回答

1

我會讓CustomerRepository也處理地址的更新。我假設你正在使用一個對象模型,其中一個客戶對象具有一個使用 「具有」關係(即客戶具有地址)的通用地址集合。如果您在存儲庫的引擎下使用ORM,它將處理此對象及其關係的更新。我看不到每個存儲庫都處理這種關係的個別對象或您的業務邏輯需要處理這種關係的更新的好處。只有在直接使用地址時纔會使用AddressRepository。這是我對這個簡單的「有」關係的例子的建議。有時候會有更復雜的關係,您希望業務邏輯能夠爲您處理這個問題,而不是存儲庫。一個例子可能是對象分佈在不同的數據存儲中。

+0

是的,我使用實體框架作爲ORM。謝謝您的幫助! – Scottie 2012-01-27 15:04:49