数据库对象'create'的映射没有执行,但'drop'正在执行?

时间:2011-05-12 17:28:46

标签: nhibernate nhibernate-mapping

我有一个使用映射语法的现有NHibernate 2.1.2.4000映射:

<database-object>
    <create>
      CREATE VIEW View_Register AS ... (truncated for example)
    </create>
    <drop>
      DROP VIEW View_Register
    </drop>
</database-object>

创建数据库模式时,我使用:

new SchemaExport(_configuration).Execute(true, true, false, aSession.Connection, tw);

上述方法中的第三个参数是'dropOnly',显然设置为false。

过去,我的架构已创建,并且“View_Register”已成功创建。现在,我重新运行模式生成,并在模式生成开始时调用DROP,但从不调用CREATE。我已经用多个SQL分析器证实了这一点,包括NH分析器。

使用显式方言声明似乎也不起作用:

<dialect-scope name="NHibernate.Dialect.MsSql2000Dialect"/>
<dialect-scope name="NHibernate.Dialect.MsSql2005Dialect"/>
<dialect-scope name="NHibernate.Dialect.MsSql2008Dialect"/>

任何想法的人?

谢谢,

大卫

1 个答案:

答案 0 :(得分:2)

我是一个完全白痴......

我的View_Register映射/视图完全正常,不是我的问题。

由于重命名的表,另一个视图无法创建BEFORE View_Register。显然,后续的数据库对象/创建调用将在先前创建的任何ADO异常中止。

很高兴知道,但我回答自己的问题感到愚蠢!