Jef*_*Fay 21 c# linq stored-procedures linqpad
在visual studio中,你有一个漂亮的设计师用一个漂亮的小方法封装一个存储过程.我非常喜欢LINQPad并且每天都在工作中使用它(因为我一直在使用它,所以不需要为我的工作打开SQL Studio!)并且想在使用它时调用存储过程.
我担心我知道自己问题的答案,但是我希望可能有一个我缺少的功能,或者也许某人有一些黑魔法,他们可以借给我来实现这个目标.顺便说一下,如果有所不同,我正在使用LINQPad 4.
编辑
请参阅下面的答案.
Mar*_*age 19
总结一些其他答案以及添加一些额外信息:
使用Default(LINQ to SQL)驱动程序连接到数据源.确保选中包含存储过程和函数的复选框.
现在,在使用连接的查询中,存储过程和函数可用作.NET函数(例如C#).函数所需的参数反映了存储过程或数据库函数所需的参数.
函数返回的值是ReturnDataSet
从中派生的LINQPad类型DataSet
.不幸的是,在数据集上执行LINQ查询并不容易,但LINQPad提供了扩展方法AsDynamic()
,该方法将获取返回数据集的第一个表(通常只有一个表)并将行转换IEnumerable<Object>
为集合中对象的位置dynamic允许您将列值作为属性进行访问.例如,如果存储过程返回列Id
,则Name
可以使用LINQ:
SomeStoredProc().AsDynamic().Where(row => row.Id == 123 && row.Name == "Foo")
Run Code Online (Sandbox Code Playgroud)
不幸的是,你不会有智能感知,因为行对象是动态的.
我的回答(在Daniel的帮助下,谢谢.)
Daniel帮助我意识到,如果使用查询窗口中的下拉列表来定位数据库,则可以调用存储过程.然后在查询窗口中通过其名称调用存储的proc并将括号添加到末尾以将其作为函数调用.
当前版本(我在此日期使用4.26.2)之间的主要区别在于VS中的LINQ返回自定义数据类型以匹配从存储过程返回的数据对象,LINQPad返回DataSet.因此,通过选择"C#Statement(s)",您可以成功运行此查询:
DataSet fooResults = foo_stored_proc(myParam);
Run Code Online (Sandbox Code Playgroud)
谢谢大家的帮助!
归档时间: |
|
查看次数: |
11697 次 |
最近记录: |