gpt4 book ai didi

c# - 小巧玲珑。映射到列名称中包含空格的 SQL 列

转载 作者:可可西里 更新时间:2023-11-01 02:59:18 25 4
gpt4 key购买 nike

我今天设法启动并运行了一些小型沙箱/POC 项目,但似乎在一个问题上让我头疼......

问题:

Is there a way to get dapper to map to SQL column names with spaces in them.

我的结果集有这种效果。

例如:

SELECT 001 AS [Col 1], 
901 AS [Col 2],
00454345345345435349 AS [Col 3],
03453453453454353458 AS [Col 4]
FROM [Some Schema].[Some Table]

我的类(class)看起来像这样

    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。

目前我正在研究 Dapper 代码,我唯一可预见的解决方案是添加一些代码来“说服”列比较,但到目前为止运气不佳。

我在 StackOverflow 上看到有诸如小巧的扩展之类的东西,但我希望我可以在不添加扩展的情况下完成这项工作,如果没有的话。我会采取最快的实现方式。

最佳答案

有一个 nuget 包 Dapper.FluentMap 允许您添加列名映射(包括空格)。它类似于 EntityFramework。

// Entity class.
public class Customer
{
public string Name { get; set; }
}

// Mapper class.
public class CustomerMapper : EntityMap<Customer>
{
public CustomerMapper()
{
Map(p => p.Name).ToColumn("Customer Name");
}
}

// Initialise like so -
FluentMapper.Initialize(a => a.AddMap(new CustomerMapper()));

参见 https://github.com/henkmollema/Dapper-FluentMap更多。

关于c# - 小巧玲珑。映射到列名称中包含空格的 SQL 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14814972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com