|
|
1
30
当从父级级联到子级时,NHibernate使用SaveOrUpdate方法。您是对的,NHibernate需要某种方法来确定它应该执行插入还是更新。它将在三个不同的字段中查找未保存的值,以确定实体是否是新的。
对于分配的Id,您需要一个版本或时间戳字段来指示实体是新的。 另一种方法是显式地对子对象调用Save()。 |
|
|
2
17
我不能100%确定这是否与您遇到的问题相同,但我的数据库是100%分配的id(ugh),我必须创建一个拦截器,跟踪子级是否持久化,以便级联工作。 代码是剪切/粘贴的(这就是为什么它有愚蠢的名字…一开始我没有100%理解!),最初我90%的代码来自在线文档(我现在无法通过谷歌找到…对不起): 放置在具有要级联的指定ID的对象上的基类:
添加到会话的侦听器:
默认情况下,对象以false的persistend(_saved)开头。当NHibernate加载或保存实体时,触发器将对象持久化(_saved)标志设置为true。 因此,对于未持久化的新项目,它从false开始并保持false,因为NHibernate从未保存或加载它。当NHibernate检查子项是否是瞬态时,触发器会响应它是瞬态的,并且会发生一次保存,将该子项标记为持久化。现在,任何将来的使用都需要一个加载,该加载再次将其标记为持久化。 |
|
|
3
-1
|
|
|
Nico Pizzo · 子查询上的nhibernate联接 8 年前 |
|
|
YMC · 无法在Nhb 4中构建只有特定字段可供选择的2个表联接 8 年前 |
|
|
Stu · 具有特定类型的字符串外键的NHibernate映射 8 年前 |
|
|
Zout · 为Hibernate的HiLo算法管理的列生成ID 9 年前 |