Используется ли строка соединения SessionFactory при оценке идентичности в кэшах первого и второго уровня - PullRequest
1 голос
/ 26 января 2012

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

Для этого используется один и тот же SessionFactory для всех баз данных.

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

Таким образом, если Entity-1 для Db-1 находится в кэше второго уровня, и я запрашиваю Entity-1 для Db-2, NHibernate загрузит объект из кэша (неверно) или базы данных Db-2 (правильно).

1 Ответ

1 голос
/ 27 января 2012

После еще нескольких исследований (а именно здесь ):

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

Несмотря на то, что кэш второго уровня привязан к фабрике сеансов, используемый вами поставщик кэша не гарантируется для разделения (см. здесь ).

Решение этой проблемы (при условии, что поставщик кеша его поддерживает) состоит в том, чтобы установить RegionPrefix для кеша уникальным для каждого арендатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...