public class Account {
public DateTime? StartDate {get;set;}
public DateTime? EndDate {get;set;}
public bool IsActive {get;set;}
}
的IsActive屬性被定義爲一個公式作爲
.Formula(" StartDate < GETDATE() and (EndDate is NULL or EndDate > GetDate())")
然而,當使用QueryOver查詢所有帳戶類派生布爾屬性,其中IsActive = = true我得到一個NHibernate無法執行SQL的錯誤。
是NHibernate的生成SQL具有
...other criterias...
and this_.StartDate < GETDATE()
and (this_.EndDate is NULL
or this_.EndDate > GetDate()) = 1
如何正確定義的公式。
是式正道上面去這樣做還是有一個完全不同的方式去了解它
更新:
- 有沒有辦法做到這一點不改變標的數據庫
由於
我的解決方案達成一致,但對初始聲明:這不是它,而相反的 - 原來的公式返回一個bool這是一個「隱藏」類型的SQL Server假裝不存在,我們需要將其轉換爲整數類型(通常是位)? –
實際上最初的語句返回:'NHibernate不能執行SQL' –
我覺得我不清楚。我的意思是你的陳述「公式應該/必須在這種情況下返回布爾」。但我認爲它已經是bool了,並且您的解決方案(正確)轉換爲整數類型。 (是的,我在這挑選:) :) –