【发布时间】:2017-07-16 06:32:24
【问题描述】:
我遇到了错误
过程需要“ntext/nchar/nvarchar”类型的参数“@statement”
在使用 Entity Framework 执行存储过程时。
这是我的存储过程:
CREATE PROCEDURE [dbo].[usp_RolesList]
(@WhereCond VARCHAR(50))
AS
BEGIN
SET NoCount ON
DECLARE @SQLQuery AS VARCHAR(MAX)
SET @SQLQuery = 'Select * From dbo.AspNetRoles ' + @WhereCond
EXECUTE sp_Executesql @SQLQuery
END
这是我用于执行结果的 c# 代码
var idParam = new SqlParameter
{
ParameterName = "WhereCond",
Value = "where Id > 0"
};
var courseList = ctx.Database.SqlQuery<UserRoles>("exec usp_RolesList @WhereCond ", idParam).ToList<UserRoles>();
【问题讨论】:
-
将
@SQLQuery更改为nvarchar(max) -
现在收到错误 - $exception {“从商店提供者的数据读取器读取时发生错误。有关详细信息,请参阅内部异常。”} System.Data.Entity.Core.EntityCommandExecutionException - InnerException { “将 nvarchar 值 'ca546b0d-e4b1-4146-a879-9e760f5dd925' 转换为数据类型 int 时转换失败。”} System.Exception {System.Data.SqlClient.SqlException}
-
还有
@WhereCond -
遇到同样的错误
标签: c# sql-server entity-framework