3
我正在處理具有鎖定模式的遺留數據庫。我面臨的問題是一些表格被鍵入了已知/固定/硬編碼的實體類型Id值,而不是具有列值。這意味着我不能使用正常的參考結構。具有固定值的多對一缺失列
爲了與ENTITY_TYPEID表我可以這樣做:
public class EntityMap : ClassMap<Entity>
{
public EntityMap()
{
References(x => x.Type)
.Columns("ENTITY_SECTION","ENTITY_TYPEID");
}
}
它高興地填充Entity.Type。
對於一個固定/已知的/硬編碼型的我需要映射到一個硬編碼值而不是ENTITY_TYPE列中,表,以便在代碼中對 - 短語:
public class EntityXMap : ClassMap<EntityX>
{
public EntityXMap(int entityType)
{
References(x => x.Type)
.Columns("ENTITY_SECTION", "ENTITY_TYPE = 123");
}
}
的hasMany( )有一個Where()構造,我可以在這種情況下使用...
任何想法如何在此實現類似的東西?
感謝您的FIRO。不幸的是,我無法改變Type對象的主鍵,因爲它在全對象中使用 - 我想我簡化了一些問題。 我已經設法通過創建一個SQL視圖來爲ENTITY_TYPE列添加固定值,並將該視圖用作FNH中的表。 我不確定這個選項會在生產中飛行...有其他選擇嗎? – SteveH
視圖往往是更簡單的解決方案,如果可以的話,使用它們。根據我的經驗,鎖定模式通常意味着沒有額外的視圖,在這種情況下,只剩下解決方法。一個替代方案,我可以想到會是一個公式,不知道它是否適用於compositeIds – Firo
做了一些更多的測試,這似乎是在流利NHibernate(和NHibernate的代碼映射,爲此)的遺漏。如果我回退到XML配置,我可以使用具有公式的多對一元素而不是ENTITY_TYPE列來執行此操作 - Fluent和代碼映射都會抱怨列計數不匹配。 – SteveH