2013-06-20 5 views
5

Я унаследовал приложение MVC .NET 2008, которое использует nhibernate. Предыдущий разработчик не дошел до создания базы данных для этого проекта. Я довольно новичок в nhibernate, и я пытаюсь выяснить, что будет оптимальным решением для создания сценария базы данных для создания новой базы данных с использованием текущих сопоставлений. Я просмотрел множество сообщений на этом сайте, но до сих пор не понимаю, как заставить это работать. Любые рекомендации приветствуются.Создание сценария схемы базы данных из NHibernate

Спасибо!

ответ

6

Если у вас есть hbm.xml отображения и правильный файл конфигурации NHibernate, вы можете написать следующий код в консольного приложения для создания SQL-схемы:

//load initial config from hibernate config file 
Configuration cfg = new Configuration().Configure("hibernate.cfg.xml"); 

//add assembly in which the hbm.xml mappings are embedded (assuming Product class is in this assembly) 
cfg.AddAssembly(typeof(Product).Assembly); 

//this will generate the SQL schema file in the executable folder 
new SchemaExport(cfg).SetOutputFile("schema.sql").Execute(true, false, false); 

Если у вас есть беглые отображения, он должен выглядеть подробнее вот так:

Fluently.Configure().Database(MsSqlConfiguration.MsSql2005).Mappings(
      m => m.FluentMappings.AddFromAssemblyOf<Product>()).ExposeConfiguration(
       config => 
        { 
         new SchemaExport(config).SetOutputFile("schema.sql").Execute(true, false, false); 
        }).BuildConfiguration(); 
+0

Спасибо! У меня есть плавные сопоставления. Когда вы говорите, пишете код в консольном приложении, как подключить эту консоль к моему решению? Еще раз спасибо за это! – ssokol91

+2

В принципе, добавьте новый проект «Консольное приложение» в существующее визуальное студийное решение. Или вы можете добавить эту кучу кода при запуске своего существующего приложения или в случае, где бы вы ни находились. – Bredstik

+0

Отлично! Я заметил строку «AddFromAssemblyOf ». Должен ли я делать это для каждого сопоставленного класса, или я не понимаю его правильно? Tks! – ssokol91