0

В настоящее время у меня есть приложение с одним арендатором, в котором используются сопоставления fluent-nhibernate для сопоставления объектов C# с таблицами в моей базе данных MySQL.Перемещение приложения NHibernate-тяжелый от однократной аренды до многократной аренды с несколькими схемами

Как часть усилий по привлечению многопользовательской аренды к моему приложению, я рассматриваю возможность наличия единой схемы для каждого арендатора. То есть у меня будут n схемы с одинаковыми структурами таблиц, n где-то в сотнях.

Как я могу установить NHibernate вместе с моими текущими сопоставлениями, чтобы я мог произвольно получить доступ к правильной схеме и не реплицировать объекты C# для сопоставления каждой схемы?

ответ

1

Не проверено, но вы можете установить в SessionFactory (технически в его конфигурации) имя схемы по умолчанию. Собственность hibernate.default_schema. Таким образом, у вас может быть несколько SessionFactory, по одному для каждой схемы. Очевидно, вы не должны указывать имя scema на уровне Entity.

Что-то вроде:

var config = new Configuration(); 
... other configuration ... 
config.Properties["hibernate.default_schema"] = "Foo"; // your schema name 
ISessionFactory sf = config.BuildSessionFactory();