EF Core ExecuteSqlCommand and parameters



我必须在 ef core 1.1.2 上执行一个 sql 命令:

var projectParam = new SqlParameter("@projectid", SqlDbType.UniqueIdentifier).Value = inventory.ProjectId;
var locationParam = new SqlParameter("@locationid", SqlDbType.UniqueIdentifier).Value = location.Id;
var scanOrderParam = new SqlParameter("@scanorder", SqlDbType.Int).Value = scanOrder;
_ctx.Database.ExecuteSqlCommand("update Inventories set ScanOrder=ScanOrder+1 where ProjectId = '@projectid' AND LocationId = '@locationid' AND ScanOrder>'@scanorder';",
parameters: new[] {
projectParam, locationParam, scanOrderParam
});

它抛出异常:

  • 发生未经处理的异常:从字符串转换为唯一标识符时转换失败。
  • 如果我将 ScanOrder 写入>@scanorder 到命令中,它说必须声明 scanorder 参数。这是一个整数。
  • 如果我在项目id和位置id上不使用撇号,它会抛出必须声明的异常参数。

将参数与 ef core 一起使用的正确方法是什么?

编辑(解决方案(:问题在于我声明参数并为其提供值的方式。如果我使用此表单,它可以工作:

var projectParam = new SqlParameter("@projectid", SqlDbType.UniqueIdentifier);
projectParam.Value = inventory.ProjectId;
var locationParam = new SqlParameter("@locationid", SqlDbType.UniqueIdentifier);
locationParam.Value = location.Id;
var scanOrderParam = new SqlParameter("@scanorder", SqlDbType.Int);
scanOrderParam.Value = scanOrder;
var queryItem = new SqlParameter("@table", SqlDbType.Char) {Value = yourValue};

最新更新