如果您看到有关集合性能的文档: http://nhibernate.info/doc/nhibernate-reference/performance.html#performance-collections-taxonomy
它说:
袋子是最糟糕的情况。由于包允许重复的元素值并且没有索引列,因此不能定义主键。 NHibernate无法区分重复的行。 NHibernate通过完全删除(在单个DELETE中)并在每次更改时重新创建集合来解决此问题。这可能效率很低。
但是我不能确认这个案子。例如,如果我有一个简单的父子关系与cascade all,使用bag,使用以下代码:
using (var sf = NHibernateHelper.SessionFactory)
using (var session = sf.OpenSession())
{
var trx = session.BeginTransaction();
var par = session.Query<Parent>().First();
var c = new Child { Id = 4, Name = "Child4" };
par.Children.Add(c);
trx.Commit();
}
我没有看到任何删除,但是对子表的插入和parentid的更新。这实际上是有道理的。但它似乎与文档相矛盾。我错过了什么?
答案 0 :(得分:0)