可以说我有两个实体:Stable
和Pony
。Stable
具有一个IList<Pony>
,该HasMany
具有通过Cascade.All()
配置的session.Save(myStable)
映射。
这意味着如果我执行Pony
,则将保存集合中的每个myLittlePony
。
但是,如果我这样做会怎样?
Pony myLittlePony = new Pony(Color.Brown);
Stable myStable = new Stable(WoodTypes.RichMahogany);
myStable.Ponies.Add(myLittlePony);
session.Save(myStable);
session.Save(myLittlePony);
NHibernate会尝试两次保存
myLittlePony
吗?还是NHibernate足够“聪明”以至于知道已被持久保存到数据库中?这样做会影响性能吗?
最佳答案
NHibernate和AFAIK都很聪明,因为myLittlePony仍将处于会话中并且没有任何更改(IsDirty返回false),因此不会触发对持久性介质的另一次刷新。
关于c# - 在这种情况下,NHibernate将尝试两次保存同一对象吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2337108/