У меня есть примерная модель, которая выглядит так:
public class PersonModel
{
public int Id {get; set;}
public string FirstName {get; set;}
public string Lastname {get; set;}
public string City {get; set;}
}
В моем репозитории я хочу создать метод поиска, в который я передаю свою модель, но не все поля всегда будут заполнены. Я хочу создать WHERE и AND на основе того, заполнено ли поле в модели или нет. Если поле не заполнено, я не хочу создавать для него предложение WHERE.
Например, если я передаю FirstName = "Bob" и City = "Boston", тогда я хочу, чтобы мой поиск выглядел так:
SELECT * FROM PersonTable WHERE FirstName = @firstName AND City = @city
Поскольку я не прошел в Id или LastName, я не хочу, чтобы они добавили запрос. Если я просто перейду в City = "Boston", тогда я хочу, чтобы это выглядело так:
SELECT * FROM PersonTable WHERE City = @city
Мой метод repo будет выглядеть примерно так.
using Dapper;
public List<PersonModel> Search(PersonModel model)
{
//db = DbConnection connection
var selectSql = "SELECT * FROM PersonTable "; //build out where clause somehow
return db.Query<PersonModel>(selectSql).ToList();
}
Мой вопрос в том, как правильно создать это в моем методе репо?