ステートレス セッション インターフェイスに関する NHibernate のドキュメントには、次のように記載されています。
ステートレス セッションは、第 1 レベルのキャッシュがないため、データ エイリアシング効果に対して脆弱です。
これについての説明が見つかりませんでした。「データのエイリアシング効果」とは何ですか?
例を挙げていただければ...それは素晴らしいことです。
ステートレス セッション インターフェイスに関する NHibernate のドキュメントには、次のように記載されています。
ステートレス セッションは、第 1 レベルのキャッシュがないため、データ エイリアシング効果に対して脆弱です。
これについての説明が見つかりませんでした。「データのエイリアシング効果」とは何ですか?
例を挙げていただければ...それは素晴らしいことです。
次の例を検討してください
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 を返します。同じ顧客のエイリアスが 2 つあります