我已经继承了一堆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"
更改为有效的东西,但这完全没问题 - 只要非常明显,它不会在其他地方改变任何行为。