NHibernate LINQ:如果我重复调用,为什么查询会使用不正确的char值?

NHibernate LINQ:如果我重复调用,为什么查询会使用不正确的char值?,nhibernate,fluent-nhibernate,linq-to-nhibernate,Nhibernate,Fluent Nhibernate,Linq To Nhibernate,使用NHibernate 3.3.1.4000/.Net 3.5 我有一个映射到现有Oracle 10g数据库的对象: public MyJob : LegacyOracleDbObjects { public virtual int JobID { get; protected set; } public virtual char Status { get; protected set; } } 和一个映射: public MyJobMap() { Table("JO

使用NHibernate 3.3.1.4000/.Net 3.5

我有一个映射到现有Oracle 10g数据库的对象:

public MyJob : LegacyOracleDbObjects {
    public virtual int JobID { get; protected set; }
    public virtual char Status { get; protected set; }
}
和一个映射:

public MyJobMap()
{
    Table("JOB");
    Id(x => x.JobID).Column("JOB_ID");
    Map(x => x.Status).Column("STATUS");
}
和LINQ查询:

char selected_status = 'W'

query = from job in query
        where job.Status == selected_status
        select job;
这在我第一次运行它时效果很好,但是如果我尝试运行查询:

char selected_status = 'S'

query = from job in query
        where job.Status == selected_status
        select job;
NHibernate仍然将值“W”(即状态的第一个值)传递到数据库查询中。我已经检查了传递到查询中的selected_status值,它看起来很好,但是SQL查询始终包含selected_status的原始值,除非我为ID添加了一个筛选器,在这种情况下,它会将该状态用于所有后续请求,而不管我传递了什么


知道这个char查询参数为什么会这样吗?

这是NHibernate中的一个bug。NHibernate问题跟踪器中有一些关于它的bug条目,例如:

我认为这是一个bug,但在以后的版本中可能已经修复了。请尝试升级到3.3.3这个问题在4.0.0.4之前还没有解决。顺便说一句,当我使用HQL而不是LINQ时,这对我来说是正常的