1
我有兩個實體類型:如何引用nhibernate公式映射規範中的枚舉值?
- RunContainer父實體類型
- 運行子實體類型
運行有一個屬性狀態,其類型爲RunStatus的,就像這樣:
public enum RunStatus
{
Created,
Starting,
// ...
}
public class Run
{
public int ContainerId { get; private set; }
// ...
public RunStatus Status { get; private set; }
}
RunContainer具有計算屬性ActiveRunCount,如下所示:
public class RunContainer
{
public int Id { get; private set; }
// ...
public int ActiveRunCount { get; private set; }
}
在用於RunContainer.ActiveRunCount
屬性的映射中,我使用公式規範像這樣:
<property name="ActiveRunCount" formula="(select count(r.Id) from Run r where r.ContainerId = Id and r.Status = 1)"/>
我的問題是我指的是RunStatus枚舉值式中的由它們各自的數字值,而不是適當的符號名稱。任何人都可以告訴我如何使用符號名稱?
謝謝。
嗨。我們的模式是手動創建的,所以這個字段是一個smallint。但是,假設它是一個字符串。 NHibernate是否驗證給定的字符串實際上表示來自各自枚舉類型的現有值? – mark 2010-04-07 06:50:15
如果數據庫列中的字符串與枚舉中的值不匹配,則NHibernate會引發異常。然而,該公式是一個SQL語句,並未以此方式進行驗證 - nhibernate只會將該語句複製到生成的SQL中。如果你想確保你有一個有效的字符串,你應該使用其他映射方式來生成映射XML,比如流暢映射。通過流暢的映射,您可以使用代碼來定義映射。我會在我的答案中添加一個例子。 – 2010-04-07 07:28:07
謝謝。這太糟糕了,核心NHibernate不允許這樣做。 – mark 2010-04-08 08:41:27