2010-01-27 53 views
0

我新創建的系統是使用模型驅動體系結構方法創建的,所以我擁有的就是模型(讓我們假設全面的'Order'和'Product'類)。這些都是經過充分測試的類,支持我的應用程序的業務。現在是時候將這些類作爲硬盤驅動器上的對象持續存在,稍後再以相同的狀態檢索它們(這裏非常抽象地考慮)。通常我會創建一個IOrderRepository接口,並最終創建一個ADO.NET驅動的OrderRepository類,其中包含GetAll(),GetById(),Save()等方法......或者在某個時間點由BinaryFormatter驅動的OrderRepostiroy類通過這個相同的通用接口的類似目的。模型驅動的體系結構與LINQ-to-SQL或實體框架搭配使用嗎?

這種方法只是不利於LINQ-to-Sql或實體框架。試圖從預先存在的數據庫結構構建我的模型的東西似乎是錯誤的。我可以利用這些技術,但保留這種'MDA'方法來進行軟件工程嗎?

...通知我沒有提到這是一個Web應用程序。它可能會也可能不會 - 也應該不重要。

回答

0

一般來說,我認爲你不應該將用於O/R映射的業務方法和類型做成相同類型的類型。我認爲這違反了單一責任原則。實體類型的要點是彌補關係空間和對象空間之間的差距。您的業​​務類型的要點是具有可測試行爲的集合。相反,我建議您在實現數據庫中的對象時將實體類型投影到您的業務類型上。將這兩者分離可以使您的業務方法和數據映射獨立發展,這非常重要,尤其是在您無法始終控制數據庫架構的情況下。我更全面地解釋了這個想法in this presentation