无状态会话接口的NHibernate文档包括:
由于缺少第一级缓存,无状态会话容易受到数据别名影响.
我无法找到解释.'数据别名效应'是什么意思?
如果你能举例...... 那就太好了.
考虑下面的例子
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);
Run Code Online (Sandbox Code Playgroud)
因此,使用无状态会话时,客户不是同一个实例,因此在应有的位置看不到更新,ReferenceEquals 将返回 false。您有同一客户的两个别名