NHibernate SchemaExport字符串属性映射char(n),而不是varchar(n)

本文关键字:varchar SchemaExport 映射 char NHibernate 字符串 属性 | 更新日期: 2023-09-27 18:19:43

我正试图使用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)

有什么想法吗?

NHibernate SchemaExport字符串属性映射char(n),而不是varchar(n)

最终我自己解决了这个问题:

Map(x => x.MyString, "COLUMN").CustomSqlType("char(7)");