我继承了一堆 Fluent NHibernate 映射,它们目前都在它们所在的项目中工作(即应用程序使用它们并且工作)。现在我正在尝试为一些新映射构建集成测试,因此使用所有这些 - 旧的和新的 - 来生成模式,使用
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,
where (显然)False
不起作用,因为没有具有该名称的变量,并且 SQL Server 中不存在布尔值。
我该如何解决这个问题?
我不想更改映射,因为有一个使用并依赖于它们的大型应用程序 - 我不知道(我现在不想知道)如果引入了哪些细微的错误比如说,我删除了默认规范。但是,如果我可以更改"False"
并更改"True"
为可行的东西,那是完全可以的-只要很明显它不会改变其他地方的任何行为即可。