2010-03-22 41 views
5

Tôi đang sử dụng NHibernate và có một vùng bộ nhớ cache được quy định trong cấu hình NHibernate của tôi:Sự cố xóa/xóa bộ nhớ cache NHibernate?

<cache region="HalfHour" expiration="1800" priority="3" /> 

Tôi có một định nghĩa thực thể (UserDefinedGroup) được thiết lập để sử dụng vùng bộ nhớ cache này trong chế độ đọc-ghi:

<class name="UserDefinedGroup" table="Message_Groups"> 
    <cache region="HalfHour" usage="read-write" /> 
    ... 
</class> 

tôi cũng có một truy vấn HQL được thiết lập để sử dụng bộ nhớ cache truy vấn như nó trả về một số lượng lớn các trường hợp UserDefinedGroup:

var results = Session.CreateQuery("from UserDefinedGroup order by Name") 
       .SetCacheable(true) 
       .SetCacheRegion("HalfHour") 
       .List<UserDefinedGroup>(); 

Tuy nhiên, khi tôi thử và xóa một thể hiện của UserDefinedGroup tôi nhận được lỗi sau ngay cả khi thực thể được thiết lập để sử dụng bộ đệm đọc ghi.

ReadOnlyCache: Không thể ghi vào một đối tượng readonly Cristal.Model.UserDefinedGroups.UserDefinedGroup

Tôi hoàn toàn bị mất điểm hoặc hiểu lầm NHibernate bộ nhớ đệm ở đây? Tôi mong đợi điều này để thực hiện xóa và bộ nhớ cache chăm sóc chính nó một cách thích hợp, nhưng rõ ràng điều này không xảy ra.

+1

Khu vực bộ nhớ cache này có được sử dụng bởi bất kỳ thực thể nào khác không? Nếu vậy, có tập quán nào của bộ nhớ cache chỉ đọc không? Một vùng cụ thể chỉ nên có một loại sử dụng. – ddango

+0

Cảm ơn ddango, đó dường như là vấn đề chính xác. Di chuyển nó vào một khu vực bộ nhớ cache mới cố định nó. Tôi sẽ chấp nhận câu trả lời của bạn như là giải pháp nếu bạn đăng nó như là một câu trả lời chứ không phải là một bình luận :) –

Trả lời

4

Khu vực bộ nhớ cache này có được sử dụng bởi bất kỳ thực thể nào khác không? Nếu vậy, có tập quán nào của bộ nhớ cache chỉ đọc không? Một vùng cụ thể chỉ nên có một loại sử dụng.

Các vấn đề liên quan