2011-07-25 35 views
3

一個更好的的executeQuery和ExecuteCommand我Linq中 工作現在我想知道,這是更好,然後從下面來運行SQL查詢。Linq中

1)的executeQuery

2)ExecuteCommand

+1

ExecuteQuery和ExecuteCommand與LINQ無關 –

+0

其實這兩個都是linq的db上下文中的方法,而不是在linq功能的內部讓你對數據庫進行原始查詢,所以基本上這個問題沒有錯。 http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.executecommand.aspx http://msdn.microsoft.com/en-us/library/bb361109.aspx http://msdn.microsoft.com/en-us/library/bb534292.aspx – ncubica

回答

1

這兩種方法的executeQuery和ExecuteCommand是LINQ的DataContext的方法。對於LINQ to SQL沒有充分提供特定場景的情況,它們是傳遞機制。這將是罕見的,你會使用LinqToSql這些方法,因爲你會失去LINQ的表現力是使用LINQ的主要原因。您也將失去在查詢中使用強類型變量的價值,這是使用LINQ的另一個主要優勢。

它被認爲是編程習慣差,構建SQL查詢字符串,然後將其直接轉給數據庫,因爲SQL命令其構造從字符串元素一直是途徑數據庫黑客稱爲SQL注入。因此,一般情況下,建議避免使用ExecuteQuery和ExecuteCommand,除非絕對必要且非常小心。現在,我說了這麼多

,這裏是當將使用這些方法的說明。的executeQuery將被用來執行SELECT語句,而ExecuteCommand將被用來執行插入,更新,刪除或調用存儲過程。

但是,你應該使用LINQ查詢語法或LINQ lambda語法,讓你的SQL調用,而不是使用的executeQuery或ExecuteCommand。

0

你可以看到ExecuteCommand返回類型是int,所以如果你想截斷table/DROP DATABASE/identity reset或檢查當前值/設置ANSI nulls(返回結果),可以使用它。 ExecuteQuery返回類型是IEnumerable,因此在您提供的SQL語句返回記錄集的情況下使用它。

如果有人有更多見解,請添加您的評論。