2011-03-09 101 views
0

我已經閱讀了一些關於ADO.NET實體框架的內容,但還是有一些東西丟失了。現在(不使用EF,不知道這種技術被稱爲什麼,只是ADO.NET?),我們將所有過程存儲在數據庫中,這樣,如果我們必須更改任何我們必須進入數據庫並更改查詢,很容易(除了事實上我有100多個查詢)。ADO.NET實體框架比我使用的方法更好嗎?

如果我對EF正確,我可以更容易地查詢(沒有連接,更短的查詢),但所有內容都保存在實體數據模型中。因此,如果我需要更改查詢,我將不得不啓動VS進入,找到位置並更改查詢(我想這將是LINQ到SQL或實體SQL來執行查詢)

我只需要一些關於EF的說明,以及Entity SQL與Linq-to-SQL。

謝謝!

回答

1

當使用EF您可以使用多種類型的數據訪問:

  • Enity SQL - 這是語法類似於常見的SQL查詢,但都直接在代碼或實體模型。如果您想更改查詢,則必須重建並重新部署應用程序。
  • Linq-to-entities - 在實體模型之上的Linq查詢。同樣,如果您想更改查詢,則必須重新生成並重新部署應用程序。
  • 執行導入到模型的存儲過程(也稱爲函數導入) - 這僅僅是作爲.NET函數在您的ObjectContext上公開的sotred過程。 EF將處理參數和結果映射。
  • 執行直接SQL ExecuteStoreQueryExecuteStoreCommand(僅限EFv4)。在這裏你可以調用任何SQL,包括存儲過程。

因此,對於EF,您既有目前的方法,也有EF本身。此外,通過EF調用本機SQL具有一些優點,如自動映射到準備好的類。

無論如何,你描述的是非常罕見的情況。在許多公司中,修改DB中的某些內容需要修改應用程序的相同過程(或者更復雜),因此您不能簡單地去修改生產中的存儲過程。

+0

因此,基本上使用EF(即將數據庫模型轉換爲VS的過程)爲我提供了更多選擇,而不是我單向的數據訪問方式。並保持C#程序員與數據庫開發人員分開(如果是這種情況) – Spooks 2011-03-09 15:37:16

+0

@Spooks:是這兩個語句都是真實的,但如果你真的想有效地使用EF,你也必須理解你的數據庫服務器。 – 2011-03-09 15:39:31

+0

我看到你沒有提到linq-to-sql的猜測是不是用於這個? – Spooks 2011-03-09 15:46:37

相關問題