zoukankan      html  css  js  c++  java
  • Dapper.FastCRUD与Dapper中的CustomPropertyTypeMap冲突

    在使用Dapper.NET时,由于生成的实体的属性与数据库表字段不同(如表字段叫USER_NAME,生成的对应的实体属性则为UserName)。

    这时需要使用Dapper中的CustomPropertyTypeMap和SqlMapper.SetTypeMap(XX)进行设置。但这样设置后与Dapper.FastCRUD冲突,导致Dapper.FastCRUD无法读取数据。

    原因就是Dapper.FastCRUD在生成SQL语句时,使用了类似USER_NAME AS UserName这样的写法导致。这样就是SqlMapper.SetTypeMap(XX)映射字段不同。

    解决方案:

    找到Dapper.FastCRUD源代码:X:\github\Dapper.FastCRUD\Dapper.FastCRUD\SqlBuilders\StatementSqlBuilder.cs中约161行的函数,添加如下粉红色代码一行,如下:

            [MethodImpl(MethodImplOptions.AggressiveInlining)]
            public string GetColumnName(PropertyMapping propMapping, string tableAlias, bool performColumnAliasNormalization)
            {
                performColumnAliasNormalization = false;//add by SunYJ@20160412
                var sqlTableAlias = tableAlias == null ? string.Empty : $"{this.GetDelimitedIdentifier(tableAlias)}.";
                var sqlColumnAlias = (performColumnAliasNormalization && propMapping.DatabaseColumnName != propMapping.PropertyName)
                                         ? $" AS {this.GetDelimitedIdentifier(propMapping.PropertyName)}"
                                         : string.Empty;
                return $"{sqlTableAlias}{this.GetDelimitedIdentifier(propMapping.DatabaseColumnName)}{sqlColumnAlias}".ToString(CultureInfo.InvariantCulture);
            }

  • 相关阅读:
    vim 打开了没有权限写入的文件,怎么才能不必重新编辑
    Linux 关闭终端响铃的特性
    Python 的 print 函数
    C 语言标准库中的qsort函数使用
    java知识学习14-面向对象
    java知识学习13-方法
    java知识学习12-数组
    mac格式化重装系统
    java知识学习11- IDEA
    java知识学习10-跳转控制语句(break/continue)、循环嵌套、Random
  • 原文地址:https://www.cnblogs.com/sun51586/p/5384053.html
Copyright © 2011-2022 走看看