4

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

4

1 回答 1

3

这是 NHibernate 中的一个错误。NHibernate 问题跟踪器中有一些错误条目,例如:https ://nhibernate.jira.com/browse/NH-2500

于 2013-05-22T07:03:42.320 回答