我有一个长这样的示例模型:
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
我的仓库方法可能看起来像这样
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();
}
我的问题是如何正确地在我的存储库方法中构建这个东西?