Dapperを使用するプロジェクト、DapperExtensionsを汎用モデルで使用していて、DapperExtension.GetAllメソッドを使用してモデルを作成する方法が不思議です。DapperExtensions Generic <T> SeparateModelsからの述語を使用してモデルを作成する
以下は、DapperExtensionsを使用してフィルタリングしようとしているレコードを返すSQLコードです。
select f.*
from Item f
where f.CurrentStatus = 'Open'
AND f.ItemID not in (SELECT ItemID FROM ItemLog l WHERE f.ItemID = l.ItemID
AND l.Status != 'Escalated'
AND DateLogged <= DATEADD(mi, 25, GetDate())) //<- this value would be replaced with a variable
私はいくつかの研究を行なったし、あなたがSplit.onを使用することができたが、GETALLメソッドは次のようになります。このような状況ではかない
ことが適切であるならば、私たちは能力を持っているかわかりませんレコードをフィルタリングするには
public virtual IEnumerable<TModel> GetAll(IList<DbFilter<TModel>> filters = null)
{
filters = filters ?? new List<DbFilter<TModel>>();
using (var db = Context)
{
var pg = new PredicateGroup { Operator = GroupOperator.And, Predicates = new List<IPredicate>() };
foreach (var filter in filters)
{
pg.Predicates.Add(Predicates.Field(filter.FilterExpression, filter.FilterOperator, filter.FilterItem));
}
return db.GetList<TModel>(pg).ToList();
}
}
ご協力いただければ幸いです。私はモデルを作成するためにSPROCを作成するという考えを楽しんでいます。最も効率的なルートを決定しようとしています。
私は次の方法でモデルを作成できましたが、まだフィードバックや考えられる提案を聞いています。
public async Task<IEnumerable<FormsFnol>> GetLateItems(DateTime responseTime)
{
IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
var items = await db.QueryAsync<FormsFnol>(@"
SELECT f.*
FROM Item f
WHERE f.CurrentStatus = 'Open'
AND f.ItemID not in (SELECT ItemID FROM ItemLog l WHERE f.ItemID = l.ItemID
AND l.Status != 'Escalated'
AND DateLogged <= @dateTime
", new { @dateTime = responseTime});
return items;
}