NHibernate SchemaExport string 属性 映射 char(n) 而不是 varchar(n)
NHibernate SchemaExport string property map char(n) instead of varchar(n)
我正在尝试使用 SchemaExport
生成我的表格,如下所示:
_sessionFactory = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005
.ConnectionString(connectionString))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<MyClass>())
.ExposeConfiguration(cfg => new SchemaExport(cfg).Execute(false, true,false))
.BuildSessionFactory();
它有效,但它会创建由我的字符串属性映射为 nvarchar(n)
或 varchar(n)
的列。我真的需要将它们创建为 char(n)
,因为我确信它们的长度是恒定的。
我试过以下方法:
Map(x => x.MyString, "COLUMN").CustomType("char").Length(7); //-> varchar(7)
Map(x => x.MyString, "COLUMN").CustomType("AnsiString").Length(7); //-> varchar(7)
Map(x => x.MyString, "COLUMN").Length(7); //-> nvarchar(7)
Map(x => x.MyString, "COLUMN").CustomSqlType("char").Length(7); //-> char(1)
有什么想法吗?
最后我自己解决了这个问题:
Map(x => x.MyString, "COLUMN").CustomSqlType("char(7)");
我正在尝试使用 SchemaExport
生成我的表格,如下所示:
_sessionFactory = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005
.ConnectionString(connectionString))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<MyClass>())
.ExposeConfiguration(cfg => new SchemaExport(cfg).Execute(false, true,false))
.BuildSessionFactory();
它有效,但它会创建由我的字符串属性映射为 nvarchar(n)
或 varchar(n)
的列。我真的需要将它们创建为 char(n)
,因为我确信它们的长度是恒定的。
我试过以下方法:
Map(x => x.MyString, "COLUMN").CustomType("char").Length(7); //-> varchar(7)
Map(x => x.MyString, "COLUMN").CustomType("AnsiString").Length(7); //-> varchar(7)
Map(x => x.MyString, "COLUMN").Length(7); //-> nvarchar(7)
Map(x => x.MyString, "COLUMN").CustomSqlType("char").Length(7); //-> char(1)
有什么想法吗?
最后我自己解决了这个问题:
Map(x => x.MyString, "COLUMN").CustomSqlType("char(7)");