【发布时间】:2022-01-22 18:05:12
【问题描述】:
我尝试调用包含如下代码的方法
代码将由过程执行
不幸的是,我遇到了一个错误,我在下面描述了错误
有谁知道执行该过程的任何其他解决方案吗?
控制器:
string fromMail = "test";
string toMail= "test";
string title = "test";
string body= "test";
string sql = @"
USE [eFaktura]
GO
DECLARE @ExtSystem varchar(20)
DECLARE @AdresOd varchar(255)
DECLARE @AdresDo varchar(255)
DECLARE @Temat varchar(255)
DECLARE @Tresc varchar(max)
DECLARE @Logo bit
DECLARE @IDMaila int
EXECUTE [dbo].[WstawMail_X]
@ExtSystem = @ParExtSystem
,@AdresOd = @ParAdresOd
,@AdresDo = @ParAdresDo
,@Temat = @ParTemat
,@Tresc = @ParTresc
,@Logo = 0
,@IDMaila = @IDMaila output
GO
";
_context.Database.ExecuteSqlRaw(sql,
new SqlParameter("@ParExtSystem", "ECP"),
new SqlParameter("@ParAdresOd", fromMail),
new SqlParameter("@ParAdresDo", toMail),
new SqlParameter("@ParTemat", title),
new SqlParameter("@ParTresc", body),
new SqlParameter("@ParLogo", 0)
);
System.InvalidCastException H结果=0x80004002 Message=SqlParameterCollection 只接受非空SqlParameter 类型对象,不接受> SqlParameter 对象。 源=Microsoft.Data.SqlClient 堆栈跟踪: 在 Microsoft.Data.SqlClient.SqlParameterCollection.ValidateType(对象值) 在 Microsoft.Data.SqlClient.SqlParameterCollection.Add(对象值) at > Microsoft.EntityFrameworkCore.Storage.Internal.RawRelationalParameter.AddDbParameter(DbComma > nd 命令,对象值)
【问题讨论】:
-
异常清楚地说明了问题。你有什么问题?
The SqlParameterCollection only accepts non-null SqlParameter type objects -
我想我删除了空值,错误仍然存在
-
使用
new SqlParameter(name, value)构造函数本质上是AddWithValue;考虑 SQLServer 上的 avoiding it(尽管它与 SProcs 的问题不大)
标签: c# .net entity-framework