IgnoreColumns方法在传入时间型字段时无效 返回
忽略时间型字段时以下用法无效(SqlServer中,其他数据库未测):
var t4 = Context.Updateable(entity).IgnoreColumns(it => new { it.Name, it.CreateTime }).ExecuteCommand(); //时间型字段无效
var t4 = Context.Updateable(entity).IgnoreColumns(it => it == "Name" || it == "CreateTime").ExecuteCommand(); //此方法有效
另外第二种方法是严格区分大小写的,可否宽松匹配,不区分大小写?
热忱回答(6)
-
fate stay night VIP0
2018/12/20不会无原无故无效的第一种写法,你看看时间字段是不是有什么特别之处。 在看看你生成的SQL是不是过滤掉了
0 回复 -
汤汤 VIP0
2018/12/22我是在github上下载的源码上做的测试,将GetInstance里设置成InitKeyType = InitKeyType.Attribute模式,然后在Student里加一个字段UpdTime,对应的数据库字段名是upd_time,字段属性与CreateTime一样,确实存在这个问题。以下是截图:







0 回复 -
汤汤 VIP0
2018/12/22@fate stay night:貌似在 InitKeyType = InitKeyType.Attribute 模式,实体类属性名与数据库字段名不一样时存在不能忽略的情况。见下面截图。
0 回复 -
fate stay night VIP0
2018/12/22版本最新嘛
0 回复 -
汤汤 VIP0
2018/12/22@fate stay night:是的,就昨天我在自己的项目里发现这个问题,开始我怀疑是我自己代码的问题,检查了没找到原因,然后就下了最新版源码做的测试。还发现不只是时间型字段存在这个问题(如下图我又加了个字符串类型的AliasName,也存在忽略失效的问题),只要是 InitKeyType = InitKeyType.Attribute 模式,且实体类属性名与数据库字段名不一样时都会存在这个问题,应该是lambda转为SQL出现的问题。
0 回复 -
汤汤 VIP0
2018/12/22@fate stay night:跟踪发现 IgnoreColumns 方法有个参数有误,会导致这种状况,如下图。
0 回复