是否可以从存储过程中的多个视图中进行选择?我试过了,但无济于事。我觉得好像是因为我的实施是错误的。这是我的代码,如果有人想看一看。当我将这个sp添加到linq设计器并生成一个结果类时,它只有从savedarticle_v视图中选择的字段,而不是tag_v。
ALTER PROCEDURE [dbo].[mobile_GetSavedArticlesAR]
-- Add the parameters for the stored procedure here
@UserID int ,
@keyword1 varchar(50)='',
@keyword2 varchar(50)='',
@keyword3 varchar(50)='',
@keyword4 varchar(50)='',
@keyword5 varchar(50)='',
@Page int=1,
@PageLen int=20
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
declare @RowStart int
declare @RowEnd int
IF (@Page=1)
Begin
set @RowStart=(@Page-1)*(@PageLen)
set @RowEnd=(@RowStart+@PageLen);
END
ELSE
BEGIN
set @RowStart=((@Page-1)*(@PageLen))+1
set @RowEnd=((@RowStart+@PageLen))-1
END;
With myArticles as
(select ROW_NUMBER() over (ORDER BY userID DESC) as 'RowNumber',*
From savedarticle_v
where UserID=@UserID and
title like '%'+@keyword1+'%' and
title like '%'+@keyword2+'%' and
title like '%'+@keyword3+'%' and
title like '%'+@keyword4+'%' and
title like '%'+@keyword5+'%'
)
select
rownumber,journalID,journalname,articleID,title,publicationdate,likes,aviews,comments ,medabbr
from myArticles where RowNumber Between @RowStart and @RowEnd;
With myTags as
(select ROW_NUMBER() over (ORDER BY userID DESC) as 'RowNumber',*
From tags_v
where userID=@UserID
)
select tagtext from myTags where RowNumber Between @RowStart and @RowEnd
END
GO
答案 0 :(得分:2)
这与视图无关,但与您拥有多个结果集存储过程的事实无关。
中描述了从Linq-to-Sql处理多个结果集的方法答案 1 :(得分:0)
LINQ设计器本身不支持多个行集。
读取多个结果集的可靠方法是使用SqlDataReader
方法的常规ADO.NET NextResult
。
比LINQ更好的ORM是Dapper。它使用QueryMultiple
方法支持多个结果集。