2010-07-14 140 views
0

...它叫什麼?直接從數據庫查詢構建的業務對象

更詳細說明:對於我的應用程序,我創建了一個很好的業務模型來處理內存中的對象。它的存儲和視圖是不可知的。現在,對於存儲層,有一個數據庫:我將構造SQL查詢(越少越好),選擇/連接等等,我需要從相關表中獲得所有數據。一種「中間層」採用查詢結果並構建具有所有關係的業務對象。

問題:你稱這種方法是什麼?什麼是最佳實踐?

這發生在.NET C#項目中,但與此設計問題無關。

(我發現問題441532是非常相似的,但我很感興趣,更多的設計輸入)

注:我不走ORM方法依賴於在執行此操作自動工具,因爲應用程序需要只從相對較大的數據庫中選擇數據。

回答

1

我認爲它被稱爲ORM或對象關係映射。

NHibernate就是這樣一個例子。

+0

不,我不是建立一個1:1的數據庫層(一個表中的一個類)。我想直接從我從幾個(加入)SQL查詢中得到的行構建業務對象。我完全忽略了ORM方法。 – 2010-07-14 23:08:35

+0

如果你有一個數據庫中的數據,並希望在域對象中使用它,你正在做ORM。它被稱爲行數據網關,表數據網關,活動記錄,數據映射器,DAO等。 – 2010-07-14 23:17:11

+0

ORM並不意味着每個類一個表。我認爲你已經倒過來了:你可以從現有的模式生成對象,或者創建一個領域模型,然後是表格。從你決定寫的任何查詢中創建任意對象完全是另一種動物。 – duffymo 2010-07-14 23:20:23

0

有不同的ORM工具。 Linq to SQL做1:1,這不是你想要的。

你在說什麼與Domain Driven Design重疊,其中你的設計由域驅動,而不是數據庫。

在這種情況下,如果您使用的是關係數據庫,您仍然需要一個ORM,而像Entity Framework和NHibernate這樣的ORM允許您以任何您想要的方式靈活地將您的實體「映射」到您的數據庫, ,如果您的數據庫因任何原因需要更改,或者實體必須更改,無論出於何種原因,您需要更改的只是中間的「映射」層。

看看fluent nhibernate

相關問題