Замок ActiveRecord, похоже, не кэшируется - PullRequest
2 голосов
/ 05 апреля 2011

У меня есть некоторый код, который выглядит следующим образом:

Public Shared Function FindByID(ByVal SearchID As Long) As MyClass
    If (MyClass.FindAllByProperty("ID", SearchID).Count = 0) Then Return Nothing
    Return MyClass.FindAllByProperty("ID", SearchID).First
End Function

Если я включаю трассировку базы данных, кажется, что она выполняет два вызова базы данных.Насколько я понимаю, по умолчанию ActiveRecord будет кешировать объекты.Не кешируются ли результаты поиска звонков?Предположительно, в этом случае я могу легко настроить свой код, чтобы вызывать метод только один раз, но в других сценариях я мог бы захотеть сделать один и тот же вызов Find () в нескольких местах, и мне нужно было бы добавить дополнительное состояние, если яхотел сохранить результаты первого.

1 Ответ

0 голосов
/ 05 апреля 2011

Я думаю, вы, скорее всего, хотите кэширование второго уровня от nHibernate. Вам нужно сделать что-то подобное в вашей конфигурации:

<configSections>
        <section name="syscache" type="NHibernate.Caches.SysCache.SysCacheSectionHandler,NHibernate.Caches.SysCache"/>

</configSections>

    <syscache>
        <cache region="YourEntityHere" expiration="86400" priority="1"/>
        <cache region="YourOtherEntity" expiration="86400" priority="1"/>
    </syscache>
...