При выполнении хранимой процедуры без возвращаемого значения, но с пользовательским типом таблицы, например:
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
Как я могу выполнить хранимую процедуру через DbContext с несколькими входными параметрами (некоторые UDTT)?





В этом случае вам нужно (как сообщает вам сообщение об ошибке) создать массив 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);
это должно помочь stackoverflow.com/a/46711751/1236044