我正在使用傳統Oracle數據庫開發的應用程序中使用流利NHibernate(我很新)。數據庫具有由外鍵和數據庫生成的列組成的組合鍵。生成的列是通過調用具有表名稱的DB函數以及其他外鍵部分之一來提供的。生成的複合關鍵部分不是唯一的,我不能改變它。生成的關鍵部分通常也用作其他表的外鍵。Fluent Nhibernate使用複合鍵映射遺留數據庫
如果我創建指定組合鍵,因爲它是在數據庫實體映射,那麼我們就不能使用任何身份生成策略,打破工作
如果我創建指定只生成列實體映射單元作爲主鍵,然後我可以使用觸發器身份來生成ID,並獲得工作單元,但是當我想要更新或訪問子集合時,我遇到問題:密鑰的其他部分不是包含在WHERE語句中。
任何人都可以給我任何建議如何進行?
- 如果我堅持映射組合鍵,我可以擴展nhibernate來輸出SQL來使用觸發標識嗎?如果是這樣,你能建議一個起點嗎?
- 如果我映射單個列鍵,是否可以在WHERE子句中包含HasMany映射和更新的其他屬性?
你可以嘗試' ... –
Firo
2012-07-10 11:56:14
@Firo,我不認爲這是可能的流利NHibernate。如果使用XML映射,是否會輸出SQL語句以返回生成的ID,並將它用於外鍵,您是否需要htink? – TimC 2012-07-11 04:22:00
AFAIK FNH has .Generated(),必須檢查 – Firo 2012-07-11 06:54:29