我有一个使用映射语法的现有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"/>
任何想法的人?
谢谢,
大卫
答案 0 :(得分:2)
我是一个完全白痴......
我的View_Register映射/视图完全正常,不是我的问题。
由于重命名的表,另一个视图无法创建BEFORE View_Register。显然,后续的数据库对象/创建调用将在先前创建的任何ADO异常中止。
很高兴知道,但我回答自己的问题感到愚蠢!