2010-11-10 64 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
相关问题