0
我有以下類;爲什麼Castle ActiveRecord FindAllByProperty方法不使用緩存
[ActiveRecord(Lazy = true)]
[DataContract]
public class Room : ActiveRecordBase<Room>
{
[PrimaryKey]
[DataMember]
public virtual Int64 RoomId { get; protected set; }
[Property]
[DataMember]
public virtual Int64 HotelId { get; set; }
[Property]
[DataMember]
public virtual string Name { get; set; }
[Property]
[DataMember]
public virtual string Description { get; set; }
public static Room[] FindByHotelId(Int64 HotelId)
{
using (new SessionScope())
{
return (Room[])Room.FindAllByProperty(typeof(Room), "HotelId", HotelId);
}
}
}
雖然我使用
新SessionScope()
當調用FindAllByProperty(),數據庫查詢總是拿到的數據,而不是從返回數據緩存。
如果我請
Room.Find(1);
響應是從緩存中給出的,沒有對數據庫進行查詢。
爲什麼會發生這種情況,有沒有可以幫助我的Castle ActiveRecord專家?
感謝您的回答。但我不明白的是,如果我打電話給Room.Find(1)我看不到被查詢的數據庫(在數據庫日誌文件中),但可以看到數據在我的應用程序中正確返回。 – Tommassiov
這可能是因爲Castle ActiveRecord中的x.Find(1)表示session.Get或session.Find。那些nhib方法直接使用第一級緩存。 – Roger