2009-08-09 36 views
0

當您運行Linq到Sql或Linq到Entites以獲取記錄列表時,它將運行查詢以從表中選擇所有字段。這是一個有效的解決方案比方說:我運行這個LINQ什麼是從數據庫獲取數據使用LINQ到SQL或LINQ到實體的有效方法?

dim lstCustomers = from c in db.Customers select c 

它運行查詢從表中獲取的所有字段是否我需要的所有字段或沒有。我使用asp.net MVC與如果我要使用第二個查詢,則應該這樣寫我,鑑於此查詢(在這裏我只需要客戶ID和姓名)

dim lstCustomers = from c in db.Customers _ 
         select new Customer with { c.CustomerID, c.Name } 

什麼LINQ和Entity Framework的優勢。這件事我可以用SQL查詢(使用不同的語法)

任何人都可以幫忙嗎?

回答

2

首先,LINQ查詢被懶惰地評估。這意味着單線不會做任何事情,所以我假設你實際上用For Each迭代結果。

您的第一個問題的答案是肯定的,所有字段都從第一個語句的數據庫中檢索出來。

是的,但爲了直接使用SQL,您必須手動創建實體類,使用SqlDataReader或其他來手動檢索數據,以實現LINQ在該行中提供的抽象級別。代表你做更多的工作。使用LINQ to SQL,您甚至不需要顯式編寫代碼來打開與數據庫的連接。

0

actuly LINQ有不同的套優於寫作正常書寫SQL查詢:

如果你寫的SQL查詢,然後重載步驟:
1.你需要一個SQL連接類
2.你需要一個sql命令或sqldataadapter。
3.然後你需要一個像數據表和數據集的容器。

所以雖然使用LINQ你不需要所有這些步驟。就像上面寫的那樣寫查詢。

還包括你在你的sqlquery中寫了一些不正確的東西,然後沒有編譯時錯誤。只有在運行時執行查詢時纔會生成錯誤。
但與sql查詢不同,linq爲您提供編譯時錯誤。

linq是強類型集合的最佳選擇。

相關問題