在EF 6.0中,我想根据WHERE过滤器更新一些记录。我从ID的整数列表中识别的记录。问题是它将ID列表视为nvarchar“61,62,63”,并且IN运算符在整数和nvarchar之间不起作用。
var status = MyEnum.MyEnumValue;
var idList = new List<int>(...);
context.Database.ExecuteSqlInterpolated(
$"UPDATE MyTable SET MyCustomStatus = {status} WHERE Id IN ({string.Join(", ", idList)})"
);
字符串
错误
Microsoft.Data.SqlClient.SqlException
HResult=0x80131904
Message=Conversion failed when converting the nvarchar value '61, 62, 63' to data type int.
Source=Core Microsoft SqlClient Data Provider
StackTrace:
at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
...
型
你知道什么解决办法吗?
1条答案
按热度按时间gstyhher1#
您可以选择使用ExecuteSqlRaw方法,以便使用单独提供的参数的原始SQL字符串。
范例:
字符串