Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 正在工作的Fluent NHibernate映射呈现无效的CreateSchema SQL_Sql Server 2005_Fluent Nhibernate Mapping - Fatal编程技术网

Sql server 2005 正在工作的Fluent NHibernate映射呈现无效的CreateSchema SQL

Sql server 2005 正在工作的Fluent NHibernate映射呈现无效的CreateSchema SQL,sql-server-2005,fluent-nhibernate-mapping,Sql Server 2005,Fluent Nhibernate Mapping,我继承了一系列Fluent NHibernate映射,它们目前都在它们所在的项目中工作(即应用程序使用它们并工作)。现在,我正在尝试为一些新映射构建集成测试,从而使用所有这些映射(旧映射和新映射)生成模式,使用 new SchemaExport(Container.Resolve<Configuration>()).Create(true, true); 发生的情况是,在创建此表的语句中,与上述映射对应的行如下所示(它们实际上位于不同的类型和不同的表中): 其中(显然)False不

我继承了一系列Fluent NHibernate映射,它们目前都在它们所在的项目中工作(即应用程序使用它们并工作)。现在,我正在尝试为一些新映射构建集成测试,从而使用所有这些映射(旧映射和新映射)生成模式,使用

new SchemaExport(Container.Resolve<Configuration>()).Create(true, true);
发生的情况是,在创建此表的语句中,与上述映射对应的行如下所示(它们实际上位于不同的类型和不同的表中):

其中(显然)
False
不起作用,因为没有具有该名称的变量,并且SQL Server中不存在布尔值

我如何解决这个问题


我不想更改映射,因为有一个大型应用程序使用并依赖于它们——我不知道(现在我也不想知道)如果我删除默认规范,会引入哪些细微的错误。但是,如果我可以将
“False”
“True”
更改为可以工作的东西,那是完全可以的-只要很明显它不会在其他地方更改任何行为。

更改默认值是可以的。默认值是,应用程序不会从映射中获得默认值,如果属性未在构造函数或属性初始值设定项(C#3)中初始化,则应用程序将从属性的语言默认值(string=null、int=0、bool=false等)接收默认值

默认值仅与DDL创建有关,应用程序行为不会受到影响

可以将其更改为:

Map(x => x.Map).Not.Nullable().Default("'True'");
Map(x => x.Aktiv).Not.Nullable().Default("0");

我非常怀疑你的团队是否将你的应用程序功能与NH紧密结合,从NH default或FNH default中获取应用程序属性的默认值太麻烦了,即使有API可以帮助实现这一点。最好的了解方法是询问您的团队是否这样做。

可以更改默认值。如果未在构造函数或属性初始值设定项(C#3)中初始化属性,则应用不会从映射中获取默认值,应用会从属性的语言默认值(string=null、int=0、bool=false等)接收默认值

默认值仅与DDL创建有关,应用程序行为不会受到影响

可以将其更改为:

Map(x => x.Map).Not.Nullable().Default("'True'");
Map(x => x.Aktiv).Not.Nullable().Default("0");
我非常怀疑你的团队是否将你的应用程序功能与NH紧密结合,从NH default或FNH default中获取应用程序属性的默认值太麻烦了,即使有API可以帮助实现这一点。最好的了解方法是询问您的团队是否这样做

Map(x => x.Map).Not.Nullable().Default("'True'");
Map(x => x.Aktiv).Not.Nullable().Default("0");