0

ストアドプロシージャ内の複数のビューから選択することは可能ですか?私は試しましたが、役に立ちませんでした。b実装が間違っているからだと思います。誰かが見てみたい場合は、これが私のコードです。この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 
4

2 に答える 2

2

これはビューとは関係ありませんが、複数の結果セットストアドプロシージャがあるという事実とすべて関係があります。

Linq-to-Sqlから複数の結果セットを処理するアプローチは、このブログ投稿で説明されています

于 2012-08-02T19:14:31.080 に答える
0

LINQデザイナは、複数の行セットをネイティブにサポートしていません。

SqlDataReader複数の結果セットを読み取る信頼できる方法は、その方法を使用した通常のADO.NETNextResultです。

LINQよりも優れたORMはDapperです。メソッドで複数の結果セットをサポートしますQueryMultiple

于 2012-08-02T19:16:40.660 に答える