【发布时间】:2013-02-11 15:12:29
【问题描述】:
我今天作为小型沙盒/POC 项目设法启动并运行了一些东西,但似乎在一个问题上碰到了我的头......
问题:
有没有办法让 dapper 映射到带有空格的 SQL 列名。
我的结果集有这样的效果。
例如:
SELECT 001 AS [Col 1],
901 AS [Col 2],
00454345345345435349 AS [Col 3],
03453453453454353458 AS [Col 4]
FROM [Some Schema].[Some Table]
我的班级应该是这样的
public class ClassA
{
public string Col1 { get; set; }
public string Col2 { get; set; }
///... etc
}
目前我的实现是这样的
public Tuple<IList<TClass>, IList<TClass2>> QueryMultiple<TClass, TClass2>(object parameters)
{
List<TClass> output1;
List<TClass2> output2;
using (var data = this.Connection.QueryMultiple(this.GlobalParameter.RpcProcedureName, parameters, CommandType.StoredProcedure))
{
output1 = data.Read<TClass>().ToList();
output2 = data.Read<TClass2>().ToList();
}
var result = new Tuple<IList<TClass>, IList<TClass2>>(output1, output2);
return result;
}
注意:不能以任何方式修改 SQL。
目前我正在浏览精巧的代码,我唯一可预见的解决方案是添加一些代码来“说服”列比较,但到目前为止还没有太多运气。
我在 StackOverflow 上看到有一些类似 dapper 扩展的东西,但我希望我可以在不添加扩展的情况下完成这项工作,如果没有的话。我会采取最快的实施方式。
【问题讨论】:
-
我也有同样的需求。我通过为查询中的所有列添加别名来解决它,但这非常乏味。下面的解决方案可能有效,但如果 Dapper 可以添加一个属性/参数来忽略空格,而不是每个人都必须添加客户映射器,那就太好了。这些是合法名称,它应该能够轻松映射它们。
-
这是迄今为止我找到的最好的解决方案:stackoverflow.com/a/34856158/5504438
标签: c# dapper dapper-rainbow