Как активировать кеш второго уровня для свойства с отложенной загрузкой с собственным типом пользователя?

Предисловие :
В моем приложении я храню необработанные данные WAV в базе данных как байт [] . В моей модели предметной области есть класс PcmAudioStream , который представляет эти необработанные данные WAV. Я создал реализацию NHibernate IUserType для преобразования между моим классом и байтом [] .
Есть несколько классов, которые используют класс PcmAudioStream , и все они отображаются в таблицы базы данных. Чтобы избежать постоянной загрузки всех данных WAV при извлечении строки из такой таблицы, я создал реализацию Fluent NHibernate IUserTypeConvention , которая указывает, что эти свойства всегда должны загружаться лениво.
Все это работает как шарм.

Вопрос:
Поскольку содержимое этих PcmAudioStream редко меняется, я хочу поместить полученные экземпляры в кэш второго уровня. Теперь я знаю, как активировать кеш второго уровня для полного класса, но как мне добиться этого только для ленивого загруженного свойства?


Соответствующая часть моей модели предметной области выглядит так:

public class User : Entity
{
    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
    public virtual PcmAudioStream FullNameRecording { get; set; }
    // ...
}

Отображение простое (примечание: это не мое отображение, я использую соглашение, но оно эквивалентно):

public class UserMap : ClassMap<User>
{
    public UserMap()
    {
        Id(x => x.Id);
        Map(x => x.FirstName);
        Map(x => x.LastName);
        Map(x => x.FullNameRecording).CustomType<PcmAudioStreamAsByteArray>();
    }
}
12
задан Daniel Hilgarth 15 November 2011 в 14:22
поделиться