У нас есть собственная структура кэширования, которая работает хорошо, и нам это нравится.Мы хотели бы подключить его к NHibernate, а не брать зависимость одной из других реализаций кэширования для NH.
Я написал реализацию NHibernate.Cache.ICache, которая соединяет нашу инфраструктуру с NH.Я почти полностью основал свою реализацию на этом:
https://nhcontrib.svn.sourceforge.net/svnroot/nhcontrib/trunk/src/NHibernate.Caches/Velocity/NHibernate.Caches.Velocity/VelocityClient.cs
Одна вещь, которая сразу бросилась в глаза, - это ключи кеша в интерфейсе ICache типа объекта.Наш каркасный ключ - это кеш, использующий строки.Я заметил, что реализация Velocity, описанная выше, просто выполняет .ToString () для экземпляра ключа, который передается в методы Get (ключ объекта) и Put (ключ объекта).Это заставило меня немного нервничать.
В моем тестировании выяснилось, что "ключевой" объект имеет тип string и это имя сущности.
Мои вопросы:
- Является ли слепой вызов .ToString () для ключевого экземпляра безопасным подходом (я проверяю на ноль)?
- Если эта реализация действительно безопасна, значит ли это, что это всегда строка?
- Если это всегда строка, то почему это объект типа?
Ребята из NH умнее меня, поэтому тот факт, что это объект типа, заставляет меня предположить, что здесь что-то не хватает,Я действительно не хочу вводить какую-то неясную, случайную ошибку управления сеансом с небезопасным использованием ключа в моей реализации кэша.
Любое руководство будет оценено - ура