【发布时间】:2016-06-24 04:00:41
【问题描述】:
我将 Dapper 与 Oracle 一起使用。 Oracle 查询结果列不区分大小写(除非你用双引号括起来),并且 Oracle 以大写形式返回列名。所以当使用动态时,Dapper 需要使用大写的字段名。
有没有办法让 Dapper 在使用 Dynamic 时不关心大小写?我在 DapperTable http://dapper-dot-net/Dapper/SqlMapper.DataTable.cs 中看到它使用带有 StringComparer.Ordinal 而不是 StringComparer.OrdinalIgnoreCase 的字典,我看不到任何更改它的选项。但我希望有人对此有解决方案,或者可以告诉我如何以更好的方式做到这一点。
例子:
var r = cnn.Query("select 'apple' fruit from dual").FirstOrDefault();
var f = r.Fruit; // f is set to null, but I want it to be "apple"
var F = r.FRUIT; // F is set to "apple", but I don't want to reference using all caps.
【问题讨论】:
-
我需要为此添加一个设置;问题是其他 ado.net 提供商得到了“正确”,并允许仅按大小写区分名称
-
@MarcGravell - 我看到了 Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;会使它不区分大小写,但如果是这样,我认为这仅用于属性匹配。如果可以选择使用 Dapper 开箱即用地完成这项工作,将会非常有帮助。