无法使Dapper查询映射不区分大小写

时间:2018-05-28 09:47:48

标签: .net dapper

string query = $@"SELECT m.* FROM Table1";   
return await dbConnection.QueryAsync<Job>();

在Oracle数据库表Table1中包含许多列,我不想指定所有列。列在UPPERCASE中返回,但在.NET中我们使用CamelCase(IsActive等)。结果,大写列永远不会映射到代码中的CamelCase。 (实际上查询更复杂,还有一些自定义地图和splitOn选项)。

是否可以用Dapper解决?

2 个答案:

答案 0 :(得分:1)

AFAIK Dapper区分大小写(如C#所示)。您应该使用FluentMap,它提供了将数据库列映射到类属性所需的所有灵活性:

https://www.nuget.org/packages/Dapper.FluentMap

答案 1 :(得分:1)

Dapper的SqlMapper应该 不区分大小写

您可以使用以下方法进行测试:

public class Result
{
    public int Id { get; set; }
    public string Value { get; set; }
}

[TestFixture]
public class Tests
{
    [Test]
    public async Task TestCaseSensitivity()
    {
        using (var conn = new SqlConnection(@"Data Source=.\sqlexpress; Integrated Security=true; Initial Catalog=test"))
        {
            var result = await conn.QueryFirstAsync<Result>("select ID = 1, VALUE = 'hello world'");
            Assert.That(result.Id, Is.EqualTo(1));
            Assert.That(result.Value, Is.EqualTo("hello world"));
        }
    }
}