0

このサイトで答えを見つけましたが、どれも機能しません。ASP.NET MVC Web API の単純なストアド プロシージャから結果を返そうとしています。

これは機能します:

 ctx.Database.SqlQuery <model>("StoredProc 1251");

しかし、私は常に、そのようにパラメーターをインラインで含めることはお粗末だと考えてきました。

他に試したことはありません-ここにいくつかの例を示します:

//Assuming this variable:
int intValue;
intValue = 1251;

// None of these variations that I have tried work:
ctx.Database.SqlQuery<model>("StoredProc @intValue= {0}", intValue);
ctx.Database.SqlQuery<model>("StoredProc @IntValue", 1251);
ctx.Database.SqlQuery<model>("StoredProc @IntValue", new SqlParameter("@IntValue",1251);
 //And 6 or 7 others

すべてで役に立たない SQL Server エラー メッセージが表示されます。

SP付近の構文が正しくありません

これの正しい構文は何ですか?

自分の質問にはまだ答えられませんが、答えが見つかりました:

スタックオーバーフローの他の場所で、正しい構文、または構文の少なくとも1つの正しいオプションを見つけました-このサイトは本当に素晴らしいです-私はほとんどの場合、ここで答えを見つけます!

var myInt = new SqlParameter("@IntVal", SqlDbType.Int);
pMeme_ck.Value = 1251;
return ctx.Database.SqlQuery<ClaimSummary>("EXEC StoredProcedureName @IntVal=@IntVal", myInt);
4

1 に答える 1

0

データベースに対して生の SQL クエリを実行しています。ストアド プロシージャを実行する必要があります。

ctx.Database.SqlQuery<model>("EXEC StoredProc @IntValue", 1251);

更新: 実行してみてください:

ctx.<EntityType>.SqlQuery("StoredProc @IntValue", 1251);

(返されるエンティティの型名に置き換えます。)

これは、ストアド プロシージャ「StoredProc」によって返される EntityTypes を返す必要があります。これは、限定された MSDN ドキュメントです。

于 2013-08-27T18:43:09.297 に答える