В компании, в которой я работаю, у нас есть единая схема базы данных, но каждый из наших клиентов использует собственную выделенную базу данных, с одной центральной базой данных, которая хранит контактные данные клиента и какую базу данных использует клиент, чтобы мы могли подключиться к соответствующей базе данных.,Я смотрел на использование NHibernate Shards, но, похоже, он очень тихий и выглядит не полностью.
Кто-нибудь знает статус этого проекта?Кто-нибудь использовал его в производстве?
Если это еще не тот момент, который считается пригодным для использования в производстве, каковы альтернативы?Два основных из них выглядят следующим образом:
- Создайте фабрику сеансов для каждой базы данных, а затем обертку для выбора подходящей фабрики для генерации правильного сеанса - мне кажется, это имеет избыточные фабрики сеансов и не слишкомэффективных
- Создайте только одну фабрику сеансов, но при вызове opensession передайте ей IDbConnection - что позволит сеансу иметь другое соединение с базой данных.
Меня беспокоит вопрос о том, как NHibernate справится с кэшем 2-го уровня, так как я считаю, что он контролируется фабрикой сеансов - также, как я полагаю, генератор HiLo использует фабрику сеансов.В этих случаях возникнут проблемы с подключением сеансов к различным БД?Например, в итоге мы получим класс MyCompany.Model.User с идентификатором 2 в обеих базах данных, это вызовет конфликты в кэше?