我正在努力完成
SELECT * FROM Employee WHERE EnrollmentDate > DATEADD(Month, 1, HireDate)
不幸的是,HireDate
是可为空的,因此OrmLite将无法生成此查询。
var query = db.From<Employee>()
.Where(employee => employee.EnrollmentDate > employee.HireDate.Value.AddMonths(1))
);
我尝试使用哪个仍然失败
.Where(employee => employee.HireDate.HasValue && employee.EnrollmentDate > employee.HireDate.Value.AddMonths(1))
我遇到了同样的问题,发现它失败了
ServiceStack.OrmLite
SqlExpression.GetQuotedColumnName(ModelDefinition tableDef,字符串memberName)
(查看图片)
这会失败,并显示“ NullReferenceException:对象引用未设置为对象的实例。”
using (var db = _stagingConnectionFactory.Open())
{
var query = db.From<tblActivityImportCalculationQueue>();
query = query.Where(i =>
(DateTime.Now - i.LastUpdated.Value).TotalMinutes > 30
);
query.ToMergedParamsSelectStatement();
}
在OrmLite中修复此错误之前,对我来说,解决方案是使用普通sql
using (var db = _stagingConnectionFactory.Open())
{
var query = db.From<tblActivityImportCalculationQueue>();
query = query.Where("DATEDIFF(minute, LastUpdated, GETDATE()) > 30");
query.ToMergedParamsSelectStatement();
}