0
我非常確定NHibernate可以完成什麼樣的事情,但我想在這個社區上進行檢查。NHibernate映射:與另一個表中的記錄相對應的實體屬性
如果我有一個實體的Foo:
public class Foo
{
public int Id { get; set; }
public string Name { get; set; }
public bool HasRegistered { get; set; }
}
我想物業HasRegistered
是真實的,如果有在Actions
表中有相應的記錄(即有富的Id
爲外鍵和一個特定的代碼'BLAH'在另一個字段中),如果沒有則爲假。
因此,例如,HasRegistered
會如果有Action
記錄具有以下字段爲真:
FooId
(等於Foo的Id
)Code
(等於值 'BLAH' )
這樣的映射可能嗎?
到目前爲止我可以告訴,你剛剛告訴我這是可能的,只要我能以某種方式將實體的Id加入到SQL表達式中(即公式可以是動態的)。 – David 2011-02-28 10:24:36
你可以放在公式中的表達式是一個任意的SQL表達式(就像我從ayende提供的鏈接所說的那樣),你可以把一個Select ...從Actions裏面的Actions.Id = Id(Nhibernate把這個Id前綴轉換成來自coulumn的表名稱)和Actions.Code ='BLAH'。這可能是一個例子,另一種方法是用CASE WHEN來做,但我認爲第一個是可取的,因爲你沒有一套選擇的價值,但你有一個單一的表達來評估IF有一個相關的記錄和如果有代碼價值='BLAH' – Hoghweed 2011-02-28 10:33:03
謝謝。關於Id的那一點是我需要知道的。 – David 2011-02-28 10:44:47