即时通讯使用asp.net core 2.0和dapper。我的表看起来像:
N_ORDER (ID)
CREATION_DATE
N_STATUS_INT
所以,我的模型必须创建如下:
public int N_ORDER { get; set; }
public DateTime CREATION_DATE { get; set;} and etc.
有没有办法在我的模型上避免这种命名约定,好像我在使用EF Core和FluentAPI一样?所以我可以正确命名我的模型?当量:
this.Property(c => c.OrderId).HasColumnName("N_ORDER");
由于
答案 0 :(得分:0)
是的,并且该功能称为“自定义映射”。简而言之,您可以使用SetTypeMap
方法指定如何将列名称映射到对象属性。 SetTypeMap
需要CustomTypeMapper
个对象作为参数。
如果可以使用Dapper扩展,Dapper-FluentMap隐藏了所有复杂性:
https://github.com/henkmollema/Dapper-FluentMap
我在这篇文章中写的关于这两个选项的更多细节:
https://medium.com/dapper-net/custom-columns-mapping-1cd45dfd51d6
答案 1 :(得分:0)
@DavideMauri回答建议的解决方案看起来很棒。但是,我从未使用过它。
相反,我总是使用列别名。
所以,你编写如下的SQL:
SELECT N_ORDER AS OrderId,
CREATION_DATE AS CreationDate,
N_STATUS_INT AS Status
FROM MyTable AS Order
WHERE N_ORDER = 1
您的POCO如下所示:
public class Order
{
public int OrderId { get; set; }
public DateTime CreationDate { get; set;}
public int Status { get; set; }
}
你这称之为:
Order order = con.Query<Order>(sql, ......);