私は一連の Fluent NHibernate マッピングを継承しました。これらは現在、それらが含まれているプロジェクトで動作します (つまり、アプリケーションはそれらを使用して動作します)。現在、いくつかの新しいマッピングの統合テストを構築しようとしているため、古いものと新しいもののすべてを使用してスキーマを生成します。
new SchemaExport(Container.Resolve<Configuration>()).Create(true, true);
ただし、実行される SQL 生成スクリプトには無効なコードが含まれています。問題のほとんどは、次の 2 つのケースのいずれかのような行に起因しているようです。
// 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 に存在しないため、where (明らかに)は機能しません。
これを解決するにはどうすればよいですか?
マッピングを使用し、依存する大規模なアプリケーションがあるため、マッピングを変更したくありません。たとえば、デフォルトの仕様を削除します。"False"
ただし、動作するものに変更できれば"True"
、それはまったく問題ありません。ただし、他の場所の動作が変更されないことが非常に明白である限りは.