EF调用存储过程无法返回复杂类型,提示所选存储过程或函数未返回任何列

想得必得 2014-03-28 05:21:36
create procedure [dbo].[P_JS_SearchSettleMent2] 
@PayName VARCHAR(200)
AS
BEGIN
DECLARE @S1 VARCHAR(4000)
SET @S1='select * from (select s.*,p.Name as PayName,c.Name as PayName2 from SettlementBill s left join PactCustomer p on s.PayerID=p.pactCustomerID left join PactCustomer c on s.PayerID2=c.pactCustomerID
)a where 1=1'
IF(ISNULL(@PayName,'')<>'')
SET @S1=@S1+' AND a.PayName LIKE ''%'+@PayName+'%'''
EXEC sp_executesql @S1
print @S1

END
GO


VS2012 EF中无法生成复杂数据类型,提示所选存储过程或函数未返回任何列



测试去掉
IF(ISNULL(@PayName,'')<>'')
SET @S1=@S1+' AND a.PayName LIKE ''%'+@PayName+'%'''可返回

请问如何解决?
...全文
237 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
想得必得 2014-04-01
  • 打赏
  • 举报
回复
引用 1 楼 wei8887wei 的回复:
在数据库里面执行存储过程,看看有没有返回值
数据库里执行有结果
wei8887wei 2014-04-01
  • 打赏
  • 举报
回复
EF本身有许多缺陷,这个可能是EF其中之一,你可以先通过只包含最简单的"select * from A left Join B ON ···" 的存储过程,生成最终的复杂类型。实体类生成以后,你再修改存储过程,将一些逻辑判断加入存储过程。当然你也可以通过其他的方式调用存储过程。不要在一棵树上吊死。
zzyonepiece 2014-03-31
  • 打赏
  • 举报
回复
我讨厌ef模型。。。。
wei8887wei 2014-03-31
  • 打赏
  • 举报
回复
在数据库里面执行存储过程,看看有没有返回值

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧