首页 新闻 搜索 专区 学院

linq 请求EF model 存储过程 返回为int

0
悬赏园豆:10 [待解决问题]

linq 请求EF model 存储过程 返回为int 解决  以前用ado.net的时候 是列表啊  到了 ef里面变成了 int  影响行数 怎么返回列表

啰嗦的主页 啰嗦 | 初学一级 | 园豆:6
提问于:2016-01-08 11:50
< >
分享
所有回答(1)
0

你检查一下存储过程,问题出在存储过程。可能你在调试存储过程的过程中加入了Return integer这类语句了。

如果确认存储过程没有问题,你重新生成这个存储过程的Model就可以。

 

确认你看到的MODEL返回参数是一个实体。

爱编程的大叔 | 园豆:30753 (高人七级) | 2016-01-08 11:59

返回参数是int

 

 

USE [HotelDB]
GO
/****** Object: StoredProcedure [dbo].[prohotelgetroomlist] Script Date: 2016/1/8 11:35:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[prohotelgetroomlist]
@hotelid int = 20,
@depdate int=0,
@enddate int=0,
@dbname varchar(200)=''
as
/*
通过用户名对 订单表,订单关联表 进行分页
SqlServer 通用存储过程
Top 分页
*/
declare @Roomlist nvarchar(3000)--主sql
declare @Pricelist nvarchar(3000)
declare @minreprice nvarchar(3000)=''
declare @minmaprice nvarchar(3000)=''

set @roomlist=N'select hrt.roomid, hr.hotelid,hr.roomname,hr.bedstr,hr.roomarea,hr.[floor],hrt.typename,c.roomid as rproomid,c.realityprice,c.marketprice from HotelDB.dbo.HotelRoom as hr
join HotelDB.dbo.HotelSaleRoomType as hrt on (hr.roomid=hrt.roomid)
join HotelPriceDB.dbo.'+@dbname+' as c on(hrt.roomid=c.roomid)
where hr.hotelid='''+cast(@hotelid as nvarchar)+''' and c.realityprice>0 and c.marketprice>0 and c.today>='''+cast(@depdate as nvarchar)+''' and c.today<'''+cast(@enddate as nvarchar)+''''
exec(@roomlist)
print @Pricelist

支持(0) 反对(0) 啰嗦 | 园豆:6 (初学一级) | 2016-01-08 12:01

@啰嗦: 

第一个,没看懂Print @Pricelist,这个@PriceList没有赋值,你Print干啥?

 

第二个,你先构造SQL,再执行,有点脱裤子放屁,可能是有其他方面的考虑,

但是你可以先试试不脱裤子直接放屁。

 

set @roomlist=N'select hrt.roomid, hr.hotelid,hr.roomname,hr.bedstr,hr.roomarea,hr.[floor],hrt.typename,c.roomid as rproomid,c.realityprice,c.marketprice from HotelDB.dbo.HotelRoom as hr 
join HotelDB.dbo.HotelSaleRoomType as hrt on (hr.roomid=hrt.roomid)
join HotelPriceDB.dbo.'+@dbname+' as c on(hrt.roomid=c.roomid)
where hr.hotelid='''+cast(@hotelid as nvarchar)+''' and c.realityprice>0 and c.marketprice>0 and c.today>='''+cast(@depdate as nvarchar)+''' and c.today<'''+cast(@enddate as nvarchar)+'''' 
exec(@roomlist)
print @Pricelist

修改为

select hrt.roomid, hr.hotelid,hr.roomname,hr.bedstr,hr.roomarea,hr.[floor],hrt.typename,c.roomid as rproomid,c.realityprice,c.marketprice from HotelDB.dbo.HotelRoom as hr 
join HotelDB.dbo.HotelSaleRoomType as hrt on (hr.roomid=hrt.roomid)
join HotelPriceDB.dbo.'+@dbname+' as c on(hrt.roomid=c.roomid)
where hr.hotelid='''+cast(@hotelid as nvarchar)+''' and c.realityprice>0 and c.marketprice>0 and c.today>='''+cast(@depdate as nvarchar)+''' and c.today<'''+cast(@enddate as nvarchar)

这样存储过程就是返回数据行了。起码Entity Framework就不会搞错了。

你先这样试试EF,至于其他的,你等先搞定EF这件事,再考虑。

 

学习一门新技术,切忌不要一开始就加入复杂度,然后怪罪于这么新技术。

你先把EF最基本的东西掌握了,才考虑怎么加入各种技巧性的东西。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30753 (高人七级) | 2016-01-08 12:06

@爱编程的大叔: 好的谢谢 提醒

支持(0) 反对(0) 啰嗦 | 园豆:6 (初学一级) | 2016-01-08 12:22

@啰嗦: 不过我那个查询sql不许要拼  因为有个库的名字是需要动态的 如果直接把@dbname 贴在哪里  sql不认

支持(0) 反对(0) 啰嗦 | 园豆:6 (初学一级) | 2016-01-08 12:25

USE [HotelDB]
GO
/****** Object: StoredProcedure [dbo].[prohotelgetroomlist] Script Date: 2016/1/8 12:04:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[prohotelgetroomlist]
@hotelid int = 20,
@depdate int=0,
@enddate int=0,
@dbname varchar(200)=''
as
/*
通过用户名对 订单表,订单关联表 进行分页
SqlServer 通用存储过程
Top 分页
*/
declare @roomlist nvarchar(3000)--主sql

select hrt.roomid, hr.hotelid,hr.roomname,hr.bedstr,hr.roomarea,hr.[floor],hrt.typename,c.roomid as rproomid,c.realityprice,c.marketprice from HotelDB.dbo.HotelRoom as hr
join HotelDB.dbo.HotelSaleRoomType as hrt on (hr.roomid=hrt.roomid)
join HotelPriceDB.dbo.C1 as c on(hrt.roomid=c.roomid)
where hr.hotelid=@hotelid and c.realityprice>0 and c.marketprice>0 and c.today>=@depdate and c.today<@enddate
/*
SqlServer 通用存储过程
查询成交总页数
*/

支持(0) 反对(0) 啰嗦 | 园豆:6 (初学一级) | 2016-01-08 12:47

@爱编程的大叔: 现在我改了但是返回的还是int

支持(0) 反对(0) 啰嗦 | 园豆:6 (初学一级) | 2016-01-08 12:47

@啰嗦: 

1、首先确认一下你的Entity Framework 版本。4.0/5.0/6.0?

2、搜索Entity Framework 存储过程 返回值,其实就有一堆资料。

Entity Framework Code First (六)存储过程

这是6.0的Entity Framework

 

如果是之前的Entity Framework,你可以看看这篇

http://stackoverflow.com/questions/20970416/using-stored-procedure-in-entity-framework

 

或者微软的这篇文章

https://msdn.microsoft.com/en-us/data/gg699321.aspx?f=255&MSPPError=-2147217396

支持(0) 反对(0) 爱编程的大叔 | 园豆:30753 (高人七级) | 2016-01-08 15:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册