gpt4 book ai didi

c# - EF : When executing a command, 参数必须完全是数据库参数或值

转载 作者:行者123 更新时间:2023-11-30 21:33:06 33 4
gpt4 key购买 nike

当执行没有返回值但具有用户定义的表类型的存储过程时:

var dbStrings = new SqlParameter("@data", SqlDbType.Structured)
{
TypeName = new StringListType().Name,
Value = new StringListType().DataRecordsFrom(listOfStrings.Select(p => p.Value).ToList())
};
_dbContext.Database.ExecuteSqlCommand("exec [dbo].[InsertRecords] @SID, @filerType, @data", sid.ToString(), "Field", dbStrings);

我得到一个错误

When executing a command, parameters must be exclusively database parameters or values

如何通过带有多个输入参数(一些 UDTT)的 DbContext 执行存储过程?

最佳答案

在这种情况下,您需要(错误消息告诉您)创建一个 SqlParameter 数组,并在调用 ExecuteSqlCommand 时传递它。

var sqlParams = new SqlParameter[]
{
new SqlParameter("@SID", sid.ToString()),
new SqlParameter("@filterType", "Pin"),
new SqlParameter("@data", SqlDbType.Structured)
{
TypeName = new StringListType().Name,
Value = new StringListType().DataRecordsFrom(listOfStrings.Select(p => p.Value).ToList())
}
};

_dbContext.Database.ExecuteSqlCommand("exec [dbo].[InsertRecords] @SID, @filterType, @data", sqlParams);

关于c# - EF : When executing a command, 参数必须完全是数据库参数或值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51750922/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com