我們映射的對象的主鍵是這樣的:NHibernate的ISession.Replicate與SQLite和本地ID生成
Id(x => x.Id, "ID").GeneratedBy.Native("SEQUENCENAME");
我們具有取決於特定的ID的業務邏輯存在(遺留,不容易改變)。新對象應該從Oracle序列中生成id,但總是有已知id的行。
我們使用SQLite進行單元測試,我需要用這些已知的ID將新對象保存到內存數據庫中。這不會有任何下列方法工作:
session.Replicate(objectWithKnownId, <any replication mode>);
session.Merge(objectWithKnownId)
據NHibernate的文檔中,Replicate
方法似乎正是我要找的。
堅持所有可達瞬態 對象,重用當前 標識符值。
但是,當將它與SQLite一起使用時,我只會獲得生成的id。任何人都可以想出一個解決這個問題的好方法嗎?
感謝您的輸入。我同意,邏輯依賴於某些標識符似乎有點奇怪,但這是一個遺留數據庫,我無法改變這一點。 – 2011-02-10 07:35:17