2013-05-22 25 views
4

使用NHibernate 3.3.1.4000/.NET 3.5NHibernate LINQ:如果我重複調用,爲什麼查詢使用不正確的char值?

我有一個對象,我映射到現有的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; 

這工作正常第一次我ru ñ它,但如果我再嘗試運行查詢:

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查詢參數是這樣的行爲?

+0

我相信這是一個錯誤,但它可能已在更高版本中修復。請嘗試升級到3.3.3 –

+0

這是從4.0.0.4 – brainbolt

+0

未解決順便說一句,當我使用HQL而不是LINQ – brainbolt

回答

相關問題