2011-05-12 58 views
0

我已使用该映射语法的现有的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"/> 

任何想法乡亲?

感谢,

大卫

回答

2

我是一个完整的白痴...

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

由于重命名的表格,不同的视图无法创建BEFORE View_Register。显然,随后的数据库对象/创建调用在由前一个创建抛出的任何ADO异常中被中止。

很高兴知道,但我对回答自己的问题感到无聊!