首页 > 解决方案 > Dapper.Contrib:如何通过过滤除 ID 以外的列来获取一行?

问题描述

我的课如下:

[Table("tblUser")]
public class User
{
    [Key]
    public int Id { get; set; }
    public string Title { get; set; }
}

使用 Dapper.Contrib,有没有办法通过而不是 Id来获取User记录?Title

如果我像下面这样查询,它可以工作。但是,我想过滤Title不是键的列。

await connection.GetAsync<User>(Id);

标签: dapperdapper-contrib

解决方案


查看文档,Dapper.Contrib 不支持使用键以外的标准检索记录。换句话说,它在当前实现中不支持任何类型的谓词系统。

使用GetAll,您可以使用 linq 进一步过滤它。但请记住,这不是在 RDBMS 上执行的。它将在应用程序端或内存中执行。这意味着,将首先加载整个数据,然后将其过滤。

就个人而言,我会选择使用 Dapper(绕过 Contrib)来处理这种特定情况。项目的其他部分仍将使用 Contrib。


推荐阅读