NHibernate Linq在iquerable上使用Between子句
本文关键字:Between 子句 Linq iquerable NHibernate | 更新日期: 2023-09-27 18:09:21
我想从ENTITY读取记录,其中字段VarCharDate是在两个用户输入日期之间。如果我直接执行sql,它会成功返回两个日期之间的所有记录。
。
SELECT * FROM ENTITY WHERE VarCharDate BETWEEN '2010-09-01' AND '2012-08-01'
这里的VarCharDate字段是预定义的VARCHAR类型,我不能将其更改为DateTime。日期格式固定为'YYYY-MM-DD'用于存储该字段中的值。
问题:
编辑:我使用FluentNhibernate映射实体。我还通过配置在应用程序启动时构建模式。
我正在使用Nhibernate Linq在我的c#应用程序中检索记录。我试过这样写:
session.Query<ENTITY>()
.Where(e=>
Convert.ToDateTime(e.VarCharDate) >= Convert.ToDateTime(loInputDateString) &&
Convert.ToDateTime(e.VarCharDate) <= Convert.ToDateTime(hiInputDateString)
).ToList();
执行上述语句会导致运行时错误NotSupportedException。
谷歌显示关于ExtensionMethods的结果,我发现这一切都令人困惑,所以无法实现它。
我怎样才能做到:
session.Query<ENTITY>(e=> e.VarCharDate.Between(loInputDateString,hiInputDateString)).ToList();
我也尝试了链接中提到的一些东西LINQ Between算子
你没有提到你如何映射你的实体(HBM, FluentNHibernate,…)。但是你可以使用TypeConverter。如果有可能改变VarCharDate属性在你的类的定义,然后改变它为DateTime和让NHibernate从字符串转换为DateTime和返回