Почему при сборке фабрики сессий NHibernate «настраивается кэш только для чтения»? - PullRequest
5 голосов
/ 09 февраля 2011

Я установил простую модель: документ с несколькими изображениями.Изображения сохраняются в другой базе данных и обновляются из другого унаследованного приложения, поэтому мое приложение имеет доступ только для чтения.Я установил синоним, чтобы я мог использовать таблицу изображений на другом сервере в качестве локальной таблицы.Мои отображения следующие:

<class name="Image" mutable="false" table="ImageExternal">
    <cache region="images" usage="read-only" />
    <id name="Id">
      <generator class="assigned" />
    </id>   
    <property name="Name" update="false" />
    <!-- other properties -->
</class>
<class name="Document" table="Document">    
    <id name="Id">
       <generator class="guid.comb" />
    </id>
    <!-- other properties -->
    <set name="Images" mutable="false">
      <cache region="images" usage="read-only" />
      <key column="some_guid_column" />      
      <one-to-many class="Image" />
    </set>
</class>

Сам класс изображений является изменяемым, но я могу сделать его неизменным, изменив стратегию доступа к защищенным полям.Я установил mutable = "false" в отображении изображений, все его свойства имеют update = "false", а изображения, установленные в родительских отношениях, также помечены mutable = "false".Однако при построении фабрики сеансов я получаю предупреждение «Кэш только для чтения, настроенный для изменяемого: изображения», поскольку использование кеша «только для чтения».

1 Ответ

2 голосов
/ 09 февраля 2011

Вы указываете mutable = "false" и кеш для вашего набора.Избавься от этого.

...