一个SQLSugar字典操作使用问题

打印 上一主题 下一主题

主题 833|帖子 833|积分 2499

问题

在页面进行删除对象操作时报错,列名无效:
  1. 列名 'IsDeleted' 无效。
  2. 列名 'CreateTime' 无效。
  3. 列名 'Name' 无效。
复制代码
根本信息

数据库:SqlServer  Express 16
ORM框架:SQLSugar
分析


  • 日志中打印了sql语句,直接复制sql语句到SSMS中,同样提示列名无效,可以确定列名有问题;
  • 公司的产品框架基于SQLSugar做了一层封装,通过反编译软件查看代码,使用SQLSugar字典方式更新数据库,如下:
  1. Dictionary<string, object> dt = new Dictionary<string, object>();
  2. dt.Add("IsDeleted", true);
  3. dt.Add("CreateTime", DateTime.Now);
  4. dt.Add("Name", this.currentUserName);
  5. result = db.Updateable(dt).AS(this.TableName).Where(" ID = '" + key + "'", null).ExecuteCommand();
复制代码
数据库中列名全部为大写,因此直接反编译修改模块,改成大写,替换后再次测试,问题解决:
  1. dt.Add("ISDELETED", true);
  2. dt.Add("CREATETIME", DateTime.Now);
  3. dt.Add("NAME", this.currentUserName);
复制代码

  • 但使用相同版本产品框架的其它项目,测试没有该问题,因此怀疑数据库配置有差异:

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

方法一:留意数据库的排序规则配置,使用CI;
方法二:调解框架代码,区分巨细写,与数据库列名严格同等;

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万万哇

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表