0

ストアドプロシージャから簡単な出力を取得しようとしています

ALTER PROCEDURE [dbo].[sp_getrandomnumber]
        @randoms int output
AS
begin
  set @randoms =12345
end

そして私のmvc

    public ActionResult Index()
    {
        var qry = db.sp_getrandomnumber(ref randoms); 
      ......
     return View();
    }
}

しかし、コンパイルするvar qryと、次のようなセクションでエラーが発生します

メソッド 'sp_getrandomnumber' のオーバーロードは 1 つの引数を取らない

「randoms」という名前は現在のコンテキストには存在しません

このチュートリアルに従ってみました http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retried-data-using-stored-procedures.aspx

よろしくお願いします

4

1 に答える 1

1

問題は、SPROC 出力が int であることです。

Scott Gu の記事からの次の引用を参照してください。

「LINQ to SQL は、SPROC の "out" パラメーターを参照パラメーター (ref キーワード) としてマップし、値型の場合、パラメーターを null 許容として宣言します。」

randomsしたがって、null 許容 int として宣言していることを確認する必要があります。

sp 呼び出しを次のように変更します

public ActionResult Index()
{   
    // @randoms int output from SPROC.
    int? randoms = null;

    // qry would contain a select if you had one in the SPROC.
    var qry = db.sp_getrandomnumber(ref randoms); 

    // randoms is 12345

    return View();
}

ここで別の例を見つけてください。

于 2013-04-24T10:52:45.323 に答える