小编典典

使用类属性手动映射列名

all

我是 Dapper 微型 ORM 的新手。到目前为止,我可以将它用于简单的 ORM 相关内容,但我无法将数据库列名与类属性映射。

例如,我有以下数据库表:

Table Name: Person
person_id  int
first_name varchar(50)
last_name  varchar(50)

我有一个名为 Person 的类:

public class Person 
{
    public int PersonId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

请注意,我在表中的列名与我试图将从查询结果中获得的数据映射到的类的属性名不同。

var sql = @"select top 1 PersonId,FirstName,LastName from Person";
using (var conn = ConnectionFactory.GetConnection())
{
    var person = conn.Query<Person>(sql).ToList();
    return person;
}

上面的代码不起作用,因为列名与对象的 (Person) 属性不匹配。在这种情况下,我可以在 Dapper 中做些什么来手动映射(例如person_id => PersonId)具有对象属性的列名吗?


阅读 96

收藏
2022-06-28

共1个答案

小编典典

这工作正常:

var sql = @"select top 1 person_id PersonId, first_name FirstName, last_name LastName from Person";
using (var conn = ConnectionFactory.GetConnection())
{
    var person = conn.Query<Person>(sql).ToList();
    return person;
}

Dapper 没有允许您指定Column Attribute的工具,我不反对添加对它的支持,前提是我们不引入依赖项。

2022-06-28