6

ステートレス セッション インターフェイスに関する NHibernate のドキュメントには、次のように記載されています。

ステートレス セッションは、第 1 レベルのキャッシュがないため、データ エイリアシング効果に対して脆弱です。

これについての説明が見つかりませんでした。「データのエイリアシング効果」とは何ですか?

例を挙げていただければ...それは素晴らしいことです。

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 を返します。同じ顧客のエイリアスが 2 つあります

于 2013-08-02T13:19:19.830 に答える