2017-05-11 304 views
0

我有一個基本的存儲過程SearchMovies如何在EF核心和Asp.net核心中調用Stored Proc?

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

我把從數據層的一些電話:

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 

所以怎麼來的第一個2個調用不工作,我跟着https://docs.microsoft.com/en-us/ef/core/querying/raw-sql

謝謝大家。

已更新:

貌似我搞砸了東西。

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

工作正常。

謝謝大家的幫助。

+0

將第二個查詢更改爲:entities.FromSql(「EXECUTE dbo.SearchMovies @CategoryIds」,categoryIds);'並試一試。在這種情況下不需要佔位符。 –

+0

@Siva Gopal是的,我已經嘗試了它的第一個電話=>空的結果 –

+0

'不工作'是什麼意思?首先,參數名稱是錯誤的。 SQL Server參數始終有一個「@」前綴。你得到一個錯誤,沒有結果? –

回答

1

參數的名稱是@CategoryIds而不是CategoryIds那麼改變你的第一行是:

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

entities.FromSql(「EXECUTE dbo.SearchMovies @CategoryIds」,categoryIds);新的SqlParameter(「@ CategoryIds」,6)=>仍然顯示爲空,另外兩個顯示如上所示的錯誤。多麼奇怪。 –

+0

@namvo解釋問題本身的問題,而不是評論。發佈* actual *錯誤。無論如何,語法錯誤都會導致異常。 '顯示空白'不是一個問題描述,或者是一個問題。爲什麼查詢返回一些沒有匹配行的東西?存儲過程做什麼? –

-1

您是否嘗試過的值轉換爲字符串,因爲你的程序需要VARCHAR?

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

該參數已經是字符串 –

+0

此外,'Convert.Tostring'只不過是對'whateverType.ToString()'的調用。 –