6

无状态会话接口状态的 NHibernate 文档等:

由于缺少一级缓存,无状态会话容易受到数据别名效应的影响。

我找不到对此的解释。“数据混叠效应”是什么意思?

如果你能举个例子……那就太好了

4

1 回答 1

4

考虑下面的例子

table Orders
id | customer_id | quantity
---------------------------
1  | 1           | 5
2  | 1           | 20


var orders = statelessSession.Query<Oders>().ToList();
orders[0].Customer.HasDiscount = true;
Assert.False(orders[0].Customer == orders[1].Customer);
Assert.False(orders[1].Customer.HasDiscount);

// while

var orders = session.Query<Oders>().ToList();
orders[0].Customer.HasDiscount = true;
Assert.True(orders[1].Customer.HasDiscount);

所以使用无状态会话,客户不是同一个实例,因此看不到更新应该在哪里看到,ReferenceEquals 将返回 false。您有同一个客户的两个别名

于 2013-08-02T13:19:19.830 回答