2013-08-02 27 views
5

tài liệu Các NHibernate cho stateless session interface tiểu bang, trong số những người khác:Phiên không trạng thái NHibernate - hiệu ứng răng cưa dữ liệu là gì?

phiên Stateless dễ bị dữ liệu aliasing tác, do thiếu một bộ nhớ cache đầu tiên cấp.

Tôi không thể tìm thấy lời giải thích cho điều này. 'Hiệu ứng răng cưa dữ liệu' có nghĩa là gì?

Nếu bạn có thể đưa ra các ví dụ ... that'd be great.

Trả lời

4

xem xét ví dụ sau

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

nên sử dụng phiên stateless khách hàng không phải là những ví dụ tương tự do đó cập nhật không được nhìn thấy nơi họ nên và ReferenceEquals sẽ trả về false. Bạn có hai bí danh của cùng một Khách hàng