2010-05-11 171 views
2

我有一個問題已經存在好幾年了。衆所周知,實體框架是一種ORM工具,它試圖將數據庫建模爲面向對象的訪問模型。我見過的所有示例都直接查詢數據庫表。那麼,現在數據庫中的視圖的作用是什麼呢?視圖用於以更友好的方式對數據庫建模,即幾個物理表,一個邏輯表。這對於在存儲過程中隱藏複雜的關係模型非常有用,因爲查詢內部的視圖比在每個存儲過程上重複查詢連接要容易得多。所以問題是,如果存儲過程不能利用它,那麼爲什麼實體框架非常好?實體框架和數據庫邏輯

我會試着用另一種方式解釋。你有一個稱爲類別的表。你有另一個稱爲元素的表。每個元素可以有多個類別,一個類別可以包含多個元素。對於每個類別我想計算有多少元素(這是一個簡單的但想象這個計算有一個非常複雜的公式)。現在問題來了:

選擇1:使用此計算創建視圖VCategory。 選擇2:在實體框架中包含表格類別,然後擴展該類別以包含計算。

專業選擇1:該計算是每個人都可以使用的。 對比選擇1:視圖不可更新。

專業人士選擇2:該表是可更新的 對比選擇2:該計算僅適用於符合.NET標準的系統。

dubts選擇之一1:如何用實體框架來處理這個更新?導入視圖並映射插入,更新,刪除存儲過程?

dubts選擇一個2:存儲的程序不能從實體框架中受益。如果數據庫上的一個存儲過程需要此計算,該怎麼辦?

+0

絕對可以將存儲過程綁定到EF中。 – 2010-05-11 11:22:01

+0

但這不是重點。想象一下另一個不支持.net框架的系統。如果您在數據庫中使用視圖,則其他系統可以使用視圖來優化建模域。或者想象一下sqlserver作業,他們不能採用實體框架的優點。這是如何解決的? – 2010-05-11 11:39:32

+0

您也可以映射EF中的視圖。我經常更願意將這樣的邏輯放在模型中描述,因爲在移植到別處時不需要重寫,但是您可以以任何方式進行。 – 2010-05-11 12:41:26

回答

1

真的不明白你的意思......

其實你可以prolly使用可欣賞你的ORM,如果他們是可更新的...那麼,關於使用ORM +程序? 你仍然可以在你的實體框架中使用你的數據庫視圖,並以「更友好的方式」得到一個模型。