网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 后端开发 > .Net >

一个SQLSugar字典操作使用问题

时间:2024-10-22 11:02

人气:

作者:admin

标签:

导读:问题 在页面进行删除对象操作时报错,列名无效: 列名 #39;IsDeleted#39; 无效。 列名 #39;CreateTime#39; 无效。 列名 #39;Name#39; 无效。 基本信息 数据库:SqlServer Express 16 ORM框架:SQLSugar 分析...

问题

在页面进行删除对象操作时报错,列名无效:

列名 'IsDeleted' 无效。
列名 'CreateTime' 无效。
列名 'Name' 无效。

基本信息

数据库:SqlServer Express 16

ORM框架:SQLSugar

分析

  1. 日志中打印了sql语句,直接复制sql语句到SSMS中,同样提示列名无效,可以确定列名有问题;
  2. 公司的产品框架基于SQLSugar做了一层封装,通过反编译软件查看代码,使用SQLSugar字典方式更新数据库,如下:
Dictionary<string, object> dt = new Dictionary<string, object>();
dt.Add("IsDeleted", true);
dt.Add("CreateTime", DateTime.Now);
dt.Add("Name", this.currentUserName);
result = db.Updateable(dt).AS(this.TableName).Where(" ID = '" + key + "'", null).ExecuteCommand();

数据库中列名全部为大写,因此直接反编译修改模块,改成大写,替换后再次测试,问题解决:

dt.Add("ISDELETED", true);
dt.Add("CREATETIME", DateTime.Now);
dt.Add("NAME", this.currentUserName);
  1. 但使用相同版本产品框架的其它项目,测试没有该问题,因此怀疑数据库配置有差异:

如图,报错的项目数据库排序规则为CS,未报错的项目排序规则为CI。CI/CS指 是否区分大小写,CI不区分,CS区分。

解决

方法一:注意数据库的排序规则配置,使用CI;

方法二:调整框架代码,区分大小写,与数据库列名严格一致;

转载请注明出处,欢迎交流。
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信