2010-11-10 165 views
18

在visual studio中,你有一個很好的設計器,它用一個漂亮的小方法封裝了一個存儲過程。我完全喜歡LINQPad並在工作中每天使用它(自從我使用它以來,沒有必要爲我的作業打開SQL Studio!),並且希望在使用它時調用存儲過程。是否可以在LINQPad中使用LINQ調用存儲過程?

恐怕我知道我自己的問題的答案,但我希望也許有一個功能我失蹤,或許有人有一些黑魔法,他們可以借我做到這一點。順便說一句,我使用LINQPad 4,如果這有所作爲。

編輯
請參閱下面的答案。

+1

存儲過程的支持在版本4.28(www.linqpad.net/beta.aspx)進一步改善:它現在支持可選參數,可以訪問返回值+輸出參數值,並可以從任何數據庫調用sys procs(例如sys.sp_who2)。轉到幫助|更多信息的新增功能 – 2010-11-11 04:47:56

+0

感謝喬的領導:) – jlafay 2010-11-11 04:59:42

+0

很高興我能幫上忙。您可能需要將問題的「答案」部分作爲實際答案發布。如果你這樣做,我會加快它,因爲它增加了有用的信息。 – 2010-11-11 19:32:02

回答

20

至少在我的LINQPad副本中,存儲過程顯示在數據庫樹視圖中,並且可以直接調用。

以下是截圖:

Screenshot

+0

我將不得不嘗試這些方法名稱,並查看它們是否將在語言設置爲C#語句或C#程序時執行。謝謝丹尼爾! – jlafay 2010-11-11 04:02:17

-1

您可以保存一個使用C#與標準ADO.NET對象(SqlConnection,SqlCommand等)和Dump()結果的查詢。

我意識到它不使用LINQ,但它爲我提供了很好的服務。

+0

我也做了同樣的事情,但試圖使用更多的LINQ如果可能的話:)這個問題是這一直困擾着我的腦海一段時間,並趨於浮出水面。所以我認爲今天和任何問題一樣好。 – jlafay 2010-11-10 22:11:54

8

我的回答(與丹尼爾的幫助,謝謝。)

丹尼爾幫我認識到,存儲過程,如果你的目標數據庫與被稱爲在查詢窗口中下拉列表;然後在查詢窗口中按名稱調用存儲過程,並將括號附加到末尾以將其作爲函數調用。

當前版本(我在此日期使用4.26.2)之間的主要區別在於VS中的LINQ返回自定義數據類型以匹配從存儲過程返回的數據對象,並且LINQPad返回DataSet。因此,通過選擇「C#聲明」,您可以成功運行該查詢:

DataSet fooResults = foo_stored_proc(myParam); 

感謝大家的幫忙!

11

總結了一些其他的答案以及增加多一點額外的信息:

連接到使用默認數據源(LINQ到SQL)驅動程序。確保選中了複選框包括存儲過程和功能

存儲過程和函數現在可用作使用連接的查詢中的.NET函數(例如C#)。函數所需的參數反映了存儲過程或數據庫函數所需的參數。

函數返回的值是ReturnDataSet,它是從DataSet派生的LINQPad類型。不幸的是,在數據集上執行LINQ查詢並不那麼容易,但LINQPad提供了擴展方法AsDynamic(),它將獲取返回數據集的第一個表(通常只有一個表),並將行轉換爲IEnumerable<Object>,其中集合是動態的,可以作爲屬性訪問列值。例如。如果你的存儲過程返回列IdName你可以使用LINQ:

SomeStoredProc().AsDynamic().Where(row => row.Id == 123 && row.Name == "Foo") 

不幸的是,你不會有智能感知,因爲該行對象是動態的。

0

我正在使用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
相關問題