首页 文章

流畅的NHibernate - 空架构SQL文件

提问于
浏览
0

我仍然对NHibernate架构导出和创建感到困惑 . 我想要实现的是导出模式drop-create sql文件和/或根据应用程序配置重新创建数据库模式 .

显然我开始了

private void BuildSchema(NHConf.Configuration cfg){
   var schema = new SchemaExport(cfg);
   schema.SetOutputFile(filename);
   schema.Create(true, true);
   schema.Drop(true, true);
}

但最近我发现,实际上导致我的架构重新创建的是NHConf.Environment.Hbm2ddlAuto设置为'create'而SchemaExport没有任何内容 .

此外,存在导出的SQL模式的文件存在,但它们都是空的(0KB),这是我的主要问题,因为我通过Hbm2ddlAuto属性管理模式重新创建 .

有任何想法吗?

EDIT: 在cfg.BuildSessionFactory()之前调用BuildSchema方法

我将FluentNHibernate与NH 3.1和Oracle 11g一起使用

2 回答

  • 1

    在您的方法中,您执行drop-create然后删除并启用写入数据库 .

    这足以创建文件,请确保正确设置文件名

    new SchemaExport(config)
        .SetDelimiter(";")
        .SetOutputFile(filename)
        .Create(false, false);
    

    在数据库中创建它,这对我有用

    new SchemaExport(config).Create(false, true);
    
  • 2

    如果您使用的是Fluent配置,请检查您的映射文件:

    SchemaAction.None();
    

    在我的情况下,我评论这一行和架构导出到文件现在工作!

    这篇文章让我朝着正确的方向前进:http://lostechies.com/rodpaddock/2010/06/29/using-fluent-nhibernate-with-legacy-databases/

    SchemaAction.None();下一个有趣的功能是SchemaAction.None() . 在开发我们的应用程序时,我有一个集成测试,用于构建我们所有的默认模式 . 我不想在我们的架构中生成这些表,它们是外部的 . SchemaAction.None()告诉NHibernate不要在数据库中创建这个实体 .

相关问题