如何动态查询npoco

时间:2019-01-02 10:36:46

标签: c# npoco

而不是像这样向每个类添加搜索方法;

    public List<InvoiceDetail> SearchById(int Id)
    {
        return db.Query<InvoiceDetail>()
            .Where(x => x.Id == Id)
            .ToList();
    }

如何向这样的基类添加方法;

    public virtual List<T> SearchById(int Id)
    {
        return db.Query<T>()
           .Where(x => x.Id == Id)
           .ToList();
    }

“ T不包含ID的定义”

因为ID是详细信息实体的定义。

1 个答案:

答案 0 :(得分:2)

您可以通过创建一个基类来实现此目的:

public class BaseEntity
{
    public int Id { get; set; }
}

然后使适当的实体类从BaseEntity继承为:

public class Detail : BaseEntity
{
   //some props for Detail class only
}

现在,对于您的搜索方法,您可以将where T : class约束用作:

public List<T> SearchById<T>(int id) where T : BaseEntity
{
   return db.Query<T>()
       .Where(x => x.Id == Id)
       .ToList();
}