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 バージョンの os SQL Server に接続していました。そのため、sys.sequences (システム ビューであることもわかっています) は利用できませんでした。それでも、SchemaUpdate を 2008 で動作させたいのですが、可能ですか?