我已經繼承了一堆Fluent NHibernate映射,這些映射目前都在他們所在的項目中工作(即應用程序使用它們並且工作)。現在我想建立一些新的映射,集成測試,從而使用所有這些 - 新老 - 生成模式,使用工作流暢的NHibernate映射呈現無效的CreateSchema SQL
new SchemaExport(Container.Resolve<Configuration>()).Create(true, true);
然而,所執行的SQL生成的腳本有一些無效代碼。大部分的問題似乎從喜歡這兩種情況中的一個行幹:
// x.Map is string
Map(x => x.Map).Column("Karta").Not.Nullable().Default("False");
// x.Active is bool
Map(x => x.Active).Column("Aktiv").Not.Nullable().Default("True");
會發生什麼事是,在創建此表的語句,對應於上述映射行看起來是這樣的(他們是其實不同類型,並在不同的表):
Karta NVARCHAR(255) default False not null,
Aktiv BIT default True not null,
其中(顯然)False
行不通,因爲不存在與該名稱的變量,布爾不要在SQL Server中存在。
我該如何解決這個問題?
我不想更改映射,因爲有一個大型應用程序使用並依賴於它們 - 我不知道(我不想知道此時此刻)多麼微妙如果我刪除默認規範,則會引入錯誤。如果我可以將"False"
和"True"
更改爲有效的東西,但這完全沒問題 - 只要非常明顯,它不會在其他地方改變任何行爲。