NHibernate无状态会话 - 什么是数据别名效果?

时间:2013-08-02 10:25:20

标签: nhibernate

stateless session interface州的NHibernate文档,其中包括:

  

无状态会话容易受到数据别名效果的影响,因为   缺少第一级缓存。

我无法找到解释。 '数据别名效应'是什么意思?

如果你能举例...... that'd be great

1 个答案:

答案 0 :(得分: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。您有两个同一客户的别名