NHibernate Linq在IQueryable

时间:2016-09-29 11:11:00

标签: c# mysql linq nhibernate

我想从 ENTITY 中读取记录,其中字段 VarCharDate 两个用户输入日期之间。 如果我直接执行sql,它会成功返回两个日期之间的所有记录。

即。

SELECT * FROM ENTITY WHERE VarCharDate BETWEEN '2010-09-01' AND '2012-08-01' 

这里的VarCharDate字段是预定义的VARCHAR类型,我无法将其更改为DateTime。 日期格式固定为'YYYY-MM-DD',用于在此字段中存储值。

问题:

编辑: 我正在使用FluentNhibernate for Mapping实体。我还通过配置在应用程序启动时构建架构。

我正在使用Nhibernate Linq来检索我的C#应用​​程序中的记录。 我试过像:

session.Query<ENTITY>()
            .Where(e=> 
               Convert.ToDateTime(e.VarCharDate) >= Convert.ToDateTime(loInputDateString) &&
               Convert.ToDateTime(e.VarCharDate) <= Convert.ToDateTime(hiInputDateString)
             ).ToList();

执行上述语句会导致运行时错误NotSupportedException。

Google显示有关ExtensionMethods的结果,我发现这一切都令人困惑,因此无法实现。

我怎样才能实现以下目标:

session.Query<ENTITY>(e=> e.VarCharDate.Between(loInputDateString,hiInputDateString)).ToList();

我也尝试过链接中提到的内容 LINQ Between Operator

但它不起作用。

1 个答案:

答案 0 :(得分:0)

您没有提到如何映射您的实体(HBM,FluentNHibernate,...)。但是你可以使用TypeConverter。如果可以更改类上的VarCharDate属性定义,则将其更改为DateTime,并让NHibernate将其从字符串转换为DateTime并返回。