2012-05-25 217 views
1

我正在開發一個客戶端可以遠程訪問數據庫的asp.net項目。實體框架vs企業庫

該數據庫有兩個用戶。一個用戶只能讀取訪問權限,而另一個用戶擁有訪問權限。客戶說爲了讀取數據目的,我們應該使用第一個和插入等使用第二個。

此外,客戶端告訴我儘可能使用存儲過程,因爲有大量數據將來自數據庫服務器。我想使用實體框架(EDMX)。我可以使用存儲過程嗎?在實體框架之前,我一直在使用Enterprise庫來存儲過​​程。我是否需要返回並將其與存儲過程結合使用,以便所有與數據庫相關的工作都是在數據庫服務器端完成的,而不是使用實體框架將數據帶入Web服務器?

此外,我如何使用一個用戶的只讀目的和其他用戶訪問相同的數據庫插入?我需要創建兩個Web配置嗎?使用戶只能讀取並獲得更快的結果有什麼區別嗎?

如果有更好的方法,那麼請建議我。

請建議。

+3

我投票結束這件事是因爲:很難說出這裏提出的問題。這個問題含糊不清,不明確,不完整,**過於寬泛,或者說是修辭性的,不能以目前的形式合理地回答。 –

+2

你在問一些非常模糊的問題。我會將其改爲多個不同的問題。 – CodingBarfield

回答

1

您可以使用帶有EF的存儲過程。但要小心,讓實體與存儲過程一起工作真的很困難。

EF在不編寫sql語句的情況下生成查詢,它通過觀察實體中的更改生成sql語句。它只是將你的實體映射到數據庫表。所以如果你有名爲「Item」的表,它將在代碼端創建一個對象「Item」。您可以使用代碼調用「Item」實體並調用EF的相關方法以反映實體在數據庫中所做的更改。

您可以根據操作動態創建連接字符串。

這個問題太廣泛了,所以我不知道這是否有幫助。

0

實體框架不會發生服務器端。它生成一個SQL查詢,並在數據庫上執行查詢。結果通過ef將它映射到一個對象。這被稱爲ORM。谷歌應該擁有關於ORMS的大量信息。

布萊爾

+0

我可以在Entity框架中使用存儲過程來加速性能嗎? – DotnetSparrow

+0

您可以在EF中使用存儲過程。但是,使用存儲過程會導致EF 4.x(當前版本)中的很多功能失效。 –

0

問他有什麼優勢,他覺得他具有你通過一個用戶的讀訪問,插入通過其它訪問,如果他有正當的理由,然後只是確保他知道他正在權衡在獲得考慮增加開發時間和維護。

其次,使用存儲過程與數據量有什麼關係?如果你正在做大量的查詢(可能不是如果你拉大量的數據),那麼你可以通過使用存儲過程來略微減少網絡流量,這是因爲發出存儲過程的請求將少於查詢串。但這並不值得擔心。

傑夫阿特伍德實際上有大約存儲的特效這裏一些偉大的意見: http://www.codinghorror.com/blog/2004/10/who-needs-stored-procedures-anyways.html

這裏: http://www.codinghorror.com/blog/2005/05/stored-procedures-vs-ad-hoc-sql.html

通常當人們想限制開發人員能夠使用存儲的特效它是感知利益不在真實的,而且他們沒有意識到他們正在放慢發展,因爲沒有理由。並不是說存儲過程是不好的,但它們有其自己的位置,並且有一條規則說明它們應該儘可能廣泛地使用是沒有意義的。