Как может быть динамический этот запрос npoco - PullRequest
0 голосов
/ 02 января 2019

Вместо добавления метода поиска к каждому классу, как этот;

    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 - это определение сущностей Detail.

1 Ответ

0 голосов
/ 02 января 2019

Вы можете достичь этого, создав базовый класс как:

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();
}
...