gpt4 book ai didi

ServiceStack Ormlite SqlExpressionVisitor null 检查 Where 扩展名

转载 作者:行者123 更新时间:2023-12-04 14:29:49 26 4
gpt4 key购买 nike

我想写一种方法,使用 Ormlite 的 SqlExpressionVisitor 通过空检查参数来使用一种方法查询表
这是我的方法:

public static List<UserChatsDTO> GetUserChats(int startRow, int rowCount, DateTime? startDate, DateTime? endDate, string operatorName, short? rating, string visitorName)
{
using (IDbConnection db = DbFactory.OpenDbConnection())
{
SqlExpressionVisitor<UserChatsDTO> ev = OrmLiteConfig.DialectProvider.ExpressionVisitor<UserChatsDTO>();
ev.Where(q =>
(startDate.HasValue && q.Dated >= startDate) &&
(endDate.HasValue && q.Dated <= endDate) &&
(!string.IsNullOrEmpty(operatorName) && q.TakenByUser.Contains(operatorName)) &&
(rating.HasValue && q.Rating == (short)rating) &&
(!string.IsNullOrEmpty(visitorName) && q.VisitorName.Contains(visitorName)));
//ev.OrderBy();
ev.Limit(startRow, rowCount);
return db.Select<UserChatsDTO>(ev);
}
}

但是对象引用未设置为对象的实例。当我调用 ev.Where 部分时抛出 NullReferenceException。

这里有错误还是我遗漏了什么?
谢谢你。

最佳答案

您实际上可以在 Select 方法中构建 ExpressionVisitor,如下所示:

var chats = db.Select<UserChatsDTO>(q => q
.Where(x => startDate.HasValue && x.Date >= startDate)
.Where(x => endDate.HasValue && x.Date <= endDate)
.Where(x => string.IsNullOrEmpty(operatorName) || x.TakeByUser.Contains(operatorName))
.Where(x => rating.HasValue && x.Rating == (short)rating)
.Where(x => string.IsNullOrEmpty(visitorName) || x.VisitorName.Contains(visitorName)
.Limit(startRow, rowCount));

关于ServiceStack Ormlite SqlExpressionVisitor null 检查 Where 扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16444997/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com