NH看起來像MAX只需要一次插入一次,然後在內部存儲該值,當其他進程插入數據時,這會導致一些問題。然後我沒有實際的ID和重複的關鍵異常被拋出。如何在使用NHibernate進行任何插入之前增加ID
讓我們想象一下,我們有表Cats
CREATE TABLE Cats(ID int, Name varchar(25))
然後,我們都有相應的與FluentNhibernate
public class CatMap : ClassMap<Cat>
{
public CatMap()
{
Id(m=>m.ID).GeneratedBy.Increment();
Map(m=>.Name);
}
}
所有我想要實現的是通過NHibernate的使用SELECT MAX(ID) FROM Cats
生成的ID的插入我的Cat
記錄進行映射之前插入任何。在任何提交dosnt工作後執行Session.Flush。我已經使用SQL Server分析器進行了一些調查,並且此sql執行只執行一次(在第一次插入時) - 其他插入操作不強制執行實際MAX(ID)檢索。我知道像HiLo這樣的其他算法更好,但我無法替代它。
通過實現自定義ID生成器。 – Dariusz
@Dariusz我堅持用了類似的問題完成,你可以請提供你如何實現的呢? – nozzleman
正如我一些額外的信息已經說過,我已經實現了我的自定義IdGenerator @nozzleman – Dariusz