我在使用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年工作,這有可能嗎?