2017-05-11 9 views
0

私はデータ層からいくつかの呼び出しを行うEFコアとAsp.netコアでStored Procを呼び出す方法は?

alter PROCEDURE SearchMovies
@CategoryIds varchar(50) = null AS ...

基本的なストアドプロシージャのSearchMoviesを持っている:私はhttps://docs.microsoft.com/en-us/ef/core/querying/raw-sql

を追った方法来る最初の2つの呼び出しが機能していないので、

var categoryIds = new SqlParameter("CategoryIds", "6"); 

    var aaa = entities.FromSql("EXECUTE dbo.SearchMovies @CategoryIds", categoryIds); => empty values 

    var bbb= entities.FromSql("EXECUTE dbo.SearchMovies @CategoryIds={0}", categoryIds); => error: Must declare the scalar variable "@p0". 

    var ccc= entities.FromSql("EXECUTE dbo.SearchMovies @CategoryIds={0}", "6"); => works 

を皆さんありがとう。

更新日:

私はものを台無しにしたようです。

var categoryIds = new SqlParameter("@CategoryIds", "6"); 
entities.FromSql("EXECUTE dbo.SearchMovies @CategoryIds", categoryIds) 

が問題ありません。

ありがとうございました。

+0

2番目のクエリを 'entities.FromSql(" EXECUTE dbo.SearchMovies @CategoryIds "、categoryIds);に変更して試してください。この場合、プレースホルダを持つ必要はありません。 –

+0

@Siva Gopalはい私はすでに最初の呼び出しでそれを試しました=>空の結果 –

+0

'not working'はどういう意味ですか?まず、パラメータ名が間違っています。 SQL Serverのパラメータには必ずプレフィックス@が付きます。あなたはエラーを返しますか、結果はありませんか? –

答えて

1

パラメータの名前が@CategoryIdsないCategoryIdsあるので、あなたの最初の行は、これに変更:あなたの手順では、VARCHARを必要とするため

var categoryIds = new SqlParameter("@CategoryIds", 6); 
+0

entities.FromSql( "EXECUTE dbo.SearchMovies @CategoryIds"、categoryIds);新しいSqlParameter( "@ CategoryIds"、6)=>は空のまま表示され、もう一方の2は上のようなエラーを表示します。おかしいですね。 –

+0

@ namvoは質問自体ではなく、コメントで問題を説明します。 *実際のエラーを投稿してください。構文エラーが発生すると、例外が発生します。 'Show empty'は問題の説明でも問題でもない。なぜmatchig行がない場合、クエリは何かを返す必要がありますか?とにかくストアドプロシージャは何をしますか? –

-1

は、あなたが値を文字列に変換しようとしたことがありますか?

var categoryIds = new SqlParameter("CategoryIds", Convert.ToString(6)); 
+0

パラメータは既に文字列です –

+0

さらに、 'Convert.Tostring'は' whateverType.ToString() 'の呼び出し以上のものではありません。 –

関連する問題