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);
}
最新文章
- 外接程序“VMDebugger”未能加载或者导致了异常。是否希望移除该外接程序?
- CentOS6.6安装vmware workstation报错
- UNITY 状态机 + SVN + 码云 下篇
- Python自动化之paramiko
- git总是出现untracked content怎么解决?
- 自学asp.net mvc(三)
- C# 6与VB 12即将加入模式匹配
- VS2008+ffmpeg SDK3.2调试tutorial01
- 如何将DataTable转换成List<;T>;呢?
- WCF如何在浏览器访问
- poj 1664 put apples(dfs)
- 【外文翻译】 为什么我要写 getters 和setters
- pl/sql中if的用法
- 【Elasticsearch全文搜索引擎实战】之集群搭建及配置
- day10函数,函数的使用,函数的分类,函数的返回值
- MySQL存储过程 游标
- JS Object.defineProperties()方法
- LwIP Application Developers Manual12---Configuring lwIP
- 7.ViewPagerIndicator
- base_review