可以说我有两个实体:StablePony

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/

10-09 18:20