2009-09-22 4 views
1

Есть ли что-то не так с этим кодом. Я не получаю ничего сгенерированного и никаких исключений не бросают.SchemaExport with FluentNhibernate

public static void ExportSchema() 
     { 
      Configuration cfg = LoadDefaultConfiguration(); 
      Fluently.Configure(cfg) 
       .Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.Load("dnnSphere.Meta"))) 
       .ExposeConfiguration(c => new SchemaExport(c).SetOutputFile("myDDL.sql").Execute(true,true,false)); 
     } 

ответ

6

Это зависит от того, что вы хотите сделать. Если вы, например, используете SQLite в db памяти, я никогда не работал, если не указать соединение. Это означает, что я должен открыть сеанс и сначала получить сеанс связи.

protected InMemoryFixture() 
    { 

     Configuration config = GetConfig(); 
     ISessionFactory sessionFactory = config.BuildSessionFactory(); 


     ISession session = _sessionFactory.OpenSession(); 

     new SchemaExport(_config).Execute(true, true, false, session.Connection, Console.Out); 

    } 

    private Configuration GetConfig() 
    { 
     return GetMappings() 
      .Database(SQLiteConfiguration.Standard.InMemory) 
      .BuildConfiguration(); 
    } 

    private FluentConfiguration GetMappings() 
    { 
     return Fluently.Configure().Mappings(m => m.FluentMappings.AddFromAssemblyOf<NewsMap>()); 
    } 

Тогда есть также SchemaExport (cfg) .Create (true, true); и SchemaUpdate (cfg), конечно.

+0

Нет. Я использовал MSSQL 2005. Проблема заключалась в том, что один из столбцов был назван «Схема». Теперь, когда я решил, что я попробовал поставщика SQLLite, и я получаю сообщение об ошибке: Реализация IDbCommand и IDbConnection в сборке SQLite.NET не найдена. Убедитесь, что сборка SQLite.NET находится в каталоге приложения или в глобальном кэше сборок. Если сборка находится в GAC, используйте элемент в файле конфигурации приложения, чтобы указать полное имя сборки. Это то, что вы получаете? – epitka

+0

Это обычная проблема. Прежде всего, ссылка SQLite должна быть скопирована локально (свойства ссылки), тогда вам нужно создать проект перед его запуском. Имейте в виду, я в основном использую SQLite для тестирования, но он уверен, что он отличный! :) В случае MSSQL 2005 вы должны быть в порядке с тем, что у вас было, хотя я использую новый SchemaExport (cfg) .Create (true, true); с созданием успеха здесь. – mhenrixon

Смежные вопросы