使用 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 查询参数的行为是这样的吗?