IgnoreColumns方法在传入时间型字段时无效 返回

C#论坛 老数据
6 3297

忽略时间型字段时以下用法无效(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

  • 不会无原无故无效的第一种写法,你看看时间字段是不是有什么特别之处。 在看看你生成的SQL是不是过滤掉了

    0 回复
  • 汤汤 汤汤 VIP0
    2018/12/22

    我是在github上下载的源码上做的测试,将GetInstance里设置成InitKeyType = InitKeyType.Attribute模式,然后在Student里加一个字段UpdTime,对应的数据库字段名是upd_time,字段属性与CreateTime一样,确实存在这个问题。以下是截图:


    000.png


    111.png


    222.png


    333.png


    555.png


    666.png


    777.png


    888.png

    0 回复
  • 汤汤 汤汤 VIP0
    2018/12/22

    @fate stay night:貌似在 InitKeyType = InitKeyType.Attribute 模式,实体类属性名与数据库字段名不一样时存在不能忽略的情况。见下面截图。

    0 回复
  • 版本最新嘛

    0 回复
  • 汤汤 汤汤 VIP0
    2018/12/22

    @fate stay night:是的,就昨天我在自己的项目里发现这个问题,开始我怀疑是我自己代码的问题,检查了没找到原因,然后就下了最新版源码做的测试。还发现不只是时间型字段存在这个问题(如下图我又加了个字符串类型的AliasName,也存在忽略失效的问题),只要是 InitKeyType = InitKeyType.Attribute 模式,且实体类属性名与数据库字段名不一样时都会存在这个问题,应该是lambda转为SQL出现的问题。


    图片.png

    0 回复
  • 汤汤 汤汤 VIP0
    2018/12/22

    @fate stay night:跟踪发现 IgnoreColumns 方法有个参数有误,会导致这种状况,如下图。


    图片.png

    0 回复