update根据主键更新实体,如何命中索引 返回

SqlSugar 沟通中
2 118
该叫什么 虚静 发布于2周前
悬赏:0 飞吻

请教一下,我的实体属性主键id是char(32)类型,
```C# [SugarColumn(ColumnName = "Id", ColumnDataType = "char(32)", Length = 32, IsPrimaryKey = true)] public string Id { get; set; } DbManager.Client().Updateable<Tasks>() .SetColumns(p => new Tasks {    Status = 2 }) .Where(p => p.Id == "3d8e151e436742abac318b7a4b3db4e3") .ExecuteCommand(); ``` 更新的时候,监视sql server profile底层打印出来的sql语句是这样的:\ ```sql exec sp_executesql N'UPDATE [tasks]  SET [status] = @Const0   WHERE ( [id] = @Id1 )',N'@Const0 int,@Id1 nvarchar(4000), @id nvarchar(4000)',@Const0=2, @Id1=N'3d8e151e436742abac318b7a4b3db4e3', @id=NULL ```

@Id1 nvarchar(4000)参数变量定义的是nvarchar类型, 我们之前在项目中使用ADO原生的时候,发现参数类型如果和字段类型不一致的话,索引无法命中,

 请问SqlSugar有什么好的写法嘛?

热忱回答2

  • 文档:字符索引优化

    设置成char

    0 回复
  • @fate sta:可以了,非常感谢,但是为什么最终结果中会 多一个参数出来呢?@id=NULL ,实际上我的语句中 只有两个参数,虽然数据正常更新了,但不知道有没有影响

    0 回复