NHibernate 无状态 session ——数据别名效应是什么?

标签 nhibernate

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

Stateless sessions are vulnerable to data aliasing effects, due to the lack of a first-level cache.



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

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

最佳答案

考虑下面的例子

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);

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

关于NHibernate 无状态 session ——数据别名效应是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18014647/

相关文章:

asp.net - NHibernate log4net 性能问题 - 如何禁用?

nhibernate - 使用 nHibernate 和 CaSTLe ActiveRecord 配置 NCache

c# - 使用 System.Data.OracleClient 配置 Fluent NHibernate

c# - 如何查询NHibernate的特定类型?

SQL 到带有子查询和分组的 nhibernate 内连接

NHibernate ISession.Update

nhibernate - NHibernate:获取任意条件查询返回的行数的通用方法

c# - 我如何使用 Fluent NHibernate 来区分父关系的列

c# - 使用 NHibernate 函数通过 QueryOver 过滤结果

NHibernate - 在插入时生成,防止值更新