在visual studio中,你有一個很好的設計器,它用一個漂亮的小方法封裝了一個存儲過程。我完全喜歡LINQPad並在工作中每天使用它(自從我使用它以來,沒有必要爲我的作業打開SQL Studio!),並且希望在使用它時調用存儲過程。是否可以在LINQPad中使用LINQ調用存儲過程?
恐怕我知道我自己的問題的答案,但我希望也許有一個功能我失蹤,或許有人有一些黑魔法,他們可以借我做到這一點。順便說一句,我使用LINQPad 4,如果這有所作爲。
編輯
請參閱下面的答案。
在visual studio中,你有一個很好的設計器,它用一個漂亮的小方法封裝了一個存儲過程。我完全喜歡LINQPad並在工作中每天使用它(自從我使用它以來,沒有必要爲我的作業打開SQL Studio!),並且希望在使用它時調用存儲過程。是否可以在LINQPad中使用LINQ調用存儲過程?
恐怕我知道我自己的問題的答案,但我希望也許有一個功能我失蹤,或許有人有一些黑魔法,他們可以借我做到這一點。順便說一句,我使用LINQPad 4,如果這有所作爲。
編輯
請參閱下面的答案。
至少在我的LINQPad副本中,存儲過程顯示在數據庫樹視圖中,並且可以直接調用。
以下是截圖:
我將不得不嘗試這些方法名稱,並查看它們是否將在語言設置爲C#語句或C#程序時執行。謝謝丹尼爾! – jlafay 2010-11-11 04:02:17
您可以保存一個使用C#與標準ADO.NET對象(SqlConnection
,SqlCommand
等)和Dump()
結果的查詢。
我意識到它不使用LINQ,但它爲我提供了很好的服務。
我也做了同樣的事情,但試圖使用更多的LINQ如果可能的話:)這個問題是這一直困擾着我的腦海一段時間,並趨於浮出水面。所以我認爲今天和任何問題一樣好。 – jlafay 2010-11-10 22:11:54
我的回答(與丹尼爾的幫助,謝謝。)
丹尼爾幫我認識到,存儲過程,如果你的目標數據庫與被稱爲在查詢窗口中下拉列表;然後在查詢窗口中按名稱調用存儲過程,並將括號附加到末尾以將其作爲函數調用。
當前版本(我在此日期使用4.26.2)之間的主要區別在於VS中的LINQ返回自定義數據類型以匹配從存儲過程返回的數據對象,並且LINQPad返回DataSet。因此,通過選擇「C#聲明」,您可以成功運行該查詢:
DataSet fooResults = foo_stored_proc(myParam);
感謝大家的幫忙!
總結了一些其他的答案以及增加多一點額外的信息:
連接到使用默認數據源(LINQ到SQL)驅動程序。確保選中了複選框包括存儲過程和功能。
存儲過程和函數現在可用作使用連接的查詢中的.NET函數(例如C#)。函數所需的參數反映了存儲過程或數據庫函數所需的參數。
函數返回的值是ReturnDataSet
,它是從DataSet
派生的LINQPad類型。不幸的是,在數據集上執行LINQ查詢並不那麼容易,但LINQPad提供了擴展方法AsDynamic()
,它將獲取返回數據集的第一個表(通常只有一個表),並將行轉換爲IEnumerable<Object>
,其中集合是動態的,可以作爲屬性訪問列值。例如。如果你的存儲過程返回列Id
和Name
你可以使用LINQ:
SomeStoredProc().AsDynamic().Where(row => row.Id == 123 && row.Name == "Foo")
不幸的是,你不會有智能感知,因爲該行對象是動態的。
我正在使用4.51.03版本並連接到SQL Server 2012 Express版本。連接到AdventureWorks2012數據庫後,我可以看到所有的存儲過程。右鍵單擊存儲過程並選擇StoredProceedureName(...)下拉列表,可以在查詢窗口中顯示存儲過程。您需要在包含省略號的括號內插入參數並運行查詢。
實例示於下面的兩個柱:
http://hodentekmsss.blogspot.com/2015/01/learn-querying-sql-server-2012-using.html
http://hodentekmsss.blogspot.com/2015/01/learn-querying-sql-server-2012-using_25.html
在LINQPad
存儲過程的支持在版本4.28(www.linqpad.net/beta.aspx)進一步改善:它現在支持可選參數,可以訪問返回值+輸出參數值,並可以從任何數據庫調用sys procs(例如sys.sp_who2)。轉到幫助|更多信息的新增功能 – 2010-11-11 04:47:56
感謝喬的領導:) – jlafay 2010-11-11 04:59:42
很高興我能幫上忙。您可能需要將問題的「答案」部分作爲實際答案發布。如果你這樣做,我會加快它,因爲它增加了有用的信息。 – 2010-11-11 19:32:02