3

我在使用FluentNHibernate的SchemaUpdate方法更新數據庫模式時遇到問題。 這裏是我的代碼:FluentNHibernate SchemaUpdate不起作用

Fluently.Configure() 
.Database(MsSqlConfiguration 
    .MsSql2012.ShowSql() 
    .ConnectionString(System.Configuration.ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString)) 
.Mappings(m => m.FluentMappings 
    .AddFromAssemblyOf<LanguageMap>() 
    .AddFromAssemblyOf<RoleMap>() 
//(...) 
) 
    //.ExposeConfiguration(CreateSchema) 
    .ExposeConfiguration(UpdateSchema) 
    .BuildConfiguration(); 

的CreateSchema方法是這樣的:

private static void CreateSchema(Configuration cfg) 
{ 
    var schemaExport = new SchemaExport(cfg); 
    schemaExport.Execute(false, true, true); 
    schemaExport.Drop(false, true); 
    schemaExport.Create(false, true); 
} 

而且UpdateSchema這樣的:

private static void UpdateSchema(Configuration cfg) 
{ 
    var schemaUpdate = new SchemaUpdate(cfg); 
    schemaUpdate.Execute(false, true); 
    var ex = schemaUpdate.Exceptions; 
} 

現在CreateSchema工程確定 - 被正確地創建表。問題在於UpdateSchema,它不起作用。到目前爲止,我能診斷出了什麼問題通過檢查schemaUpdate.Exceptions,其中包含2項,兩者具有相同的異常:

[System.Data.SqlClient.SqlException] = {"Invalid object name 'sys.sequences'."} 

從我讀過,sys.sequences是SQL的一個新功能Server 2012,但我不知道這個表(這是一個系統表?)應該被創建(不應該在創建數據庫時創建它?)。這可能是一個版本衝突的問題?我正在使用SQL Server 2012 Express,.NET Framework 4.5,NHibernate 3.3.1.4和FluentNHibernate 1.3

---------------------- 編輯 -------------------------
好吧,我的錯誤,我實際上連接到2008版本的SQL Server,這就是爲什麼sys.sequences(現在我也知道這是一個系統視圖)不可用。儘管如此,我還是希望SchemaUpdate能夠在2008年工作,這有可能嗎?

回答