日期:2014-5-20 浏览次数:20212次 点赞次数:20

关于LINQ使用存储过程的问题。
使用存储过程写了一个报表,但使用LINQ时不知怎么样使用。

------解决方案--------------------
在Linq 里面 存储过程就是 类的方法 

你将存储过程拖入 到Linq 页面的右边 系统自动会形成方法 你可以试验 一下

可以加入群 群号:23440297 希望大家参与讨论
------解决方案--------------------
和拖放表一样,放进去之后
XxxDataContext dc = new XxxDataContext();
dc.存储过程();
------解决方案--------------------
探讨
但报表要有返回集合呀。
这个返回集合的类型不知道怎么处理。

------解决方案--------------------
探讨
我的存储过程中是返回的临时表[多表的字段],如果单是一个表的话就不用存储过程了。

------解决方案--------------------
这个问题之前没遇到过,晚上也测试了一下,发现如果不是直接查询实际存在的表,Linq to sql没法生成模型类,也就没法返回结果集了。我用了一个变通的办法,通过测试,是可行的。
实际上就是欺骗它。做法:
创建一张表,结构和存储过程最后查询的列一致,比如叫Table1,把存储过程内容注释掉,改成简单的select * from Table1
把存储过程拖入设计器,编译。再把存储过程改回来,就OK啦,Table1也可以删掉了

当然,直接改designer.cs也可以
------解决方案--------------------
select * from 
(select ROW_NUMBER() OVER (ORDER BY aa._id) AS [ROW_NUMBER],aa.* from 
(select top (@pageIndex * @pageSize) * from #StockList aa 
where aa._goodsInfo like @goodsName) bb 
where bb.[Row_Number]>((@pageIndex-1) * @pageSize) 

这个放在最后试一下
------解决方案--------------------
探讨
使用存储过程写了一个报表,但使用LINQ时不知怎么样使用。

------解决方案--------------------
探讨
和拖放表一样,放进去之后
XxxDataContext dc = new XxxDataContext();
dc.存储过程();

------解决方案--------------------
直接拖过去
------解决方案--------------------
只能用15楼的欺骗法,生成时用假的存储过程