C# 如何调用EF core和Asp.net core中的存储过程?
我有一个基本的存储过程C# 如何调用EF core和Asp.net core中的存储过程?,c#,asp.net,entity-framework,asp.net-core,C#,Asp.net,Entity Framework,Asp.net Core,我有一个基本的存储过程 alter-PROCEDURE-SearchMovies @类别ID varchar(50)=空 作为… 我从数据层打了一些电话: var categoryIds = new SqlParameter("CategoryIds", "6"); var aaa = entities.FromSql("EXECUTE dbo.SearchMovies @CategoryIds", categoryIds ); => empty values
alter-PROCEDURE-SearchMovies
@类别ID varchar(50)=空
作为…
我从数据层打了一些电话:
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 )
很好
谢谢大家的帮助。参数的名称是
@CategoryIds
,而不是CategoryIds
,因此将第一行更改为:
var categoryIds = new SqlParameter("@CategoryIds", 6);
您是否尝试将值转换为字符串,因为您的过程需要VARCHAR
var categoryIds = new SqlParameter("CategoryIds", Convert.ToString(6));
将第二个查询更改为:
entities.FromSql(“EXECUTE dbo.SearchMovies@CategoryIds”,CategoryIds)代码>并尝试一下。在这种情况下不需要占位符。@Siva Gopal是的,我已经在第一次调用中尝试过它=>空结果不工作是什么意思?首先,参数名是错误的。SQL Server参数始终具有@
前缀。你有错误吗,没有结果?只需在链接下浏览。你可能会得到你的答案。entities.FromSql(“执行dbo.SearchMovies@CategoryIds”,CategoryIds);使用新的SqlParameter(“@CategoryIds”,6)=>仍然显示为空,另外2个显示错误,如上所述。“真奇怪!”namvo用问题本身而不是评论来解释问题。张贴实际错误。语法错误仍将导致异常。”Show empty`不是问题描述,也不是问题。如果没有匹配行,为什么查询要返回某些内容?存储过程到底做了什么?此外,Convert.Tostring
只不过是调用whateverType.Tostring()
。