NHibernate LINQ:如果我重复调用,为什么查询会使用不正确的char值?
使用NHibernate 3.3.1.4000/.Net 3.5 我有一个映射到现有Oracle 10g数据库的对象: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
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时,这对我来说是正常的