Dapper - 如何将记录作为自定义对象类型返回?

Posted

技术标签:

【中文标题】Dapper - 如何将记录作为自定义对象类型返回?【英文标题】:Dapper - How to return record as Custom object type? 【发布时间】:2021-08-21 02:44:21 【问题描述】:

我正在尝试使用 Dapper 运行查询并将数据映射到自定义类对象 Emp。

public class Emp

    public string Name  get; set; 
    public string Address  get; set; 
    public string LastName  get; set; 

我的小巧执行代码:

    string connectionString = @"Server = myserver; userid = test; password = test; database = testdb; port = 3306; Convert Zero Datetime=True";

    using (var connection = new mysqlConnection(connectionString))
    
        string sql = "SELECT * FROM EMP where empno = 1010;
        List<Emp> empList = connection.Query<Emp>(sql: sql).ToList();
    

上面的代码工作正常。 我尝试了以下,

    Emp emp = (Emp)connection.Query<Emp>(sql:sql);

错误:无法将 System.Collections.Genetic List[Emp] 类型的对象转换为 Emp 类型

我可以得到如下记录及其工作。

    Emp emp1 = empList[0];

无论如何我可以得到查询返回类型为 Emp 吗?

【问题讨论】:

Query&lt;T&gt; 将返回一个IEnumerable&lt;T&gt;。只需调用.FirstOrDefault(),您将获得T 或null 【参考方案1】:

Query 方法返回一个记录列表(行)。 要只获得一个结果,您需要使用 QuerySingleQuerySingleOrDefault

Emp emp = connection.QuerySingleOrDefault<Emp>(query);

【讨论】:

以上是关于Dapper - 如何将记录作为自定义对象类型返回?的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义类型作为输入参数放入可调用语句中

如何将从webapi返回的自定义对象数组的HttpResponse响应分配给打字稿角度中相同数组类型的对象?

如何使用json.net自定义反序列化为对象

为啥我从 Dapper 返回的对象具有 null 和默认属性值?

创建多个连接查询 - Dapper

使用 Dapper 扩展自定义 SQL