我正在使用代码和sql server 2012的NHibernate映射。我也使用Sql2008ClientDriver作为会话工厂中的驱动程序。我一直试图弄清楚如何将确切的sql类型和长度映射到表示表的C#对象。我得到的问题是生成的sql中指定的数据类型,特别是字符串。
例如:
公共虚拟字符串SomeProperty {get;组; }
在生成查询时,这会转换为nvarchar(4000)参数,但此列是数据库中的char(6)。是否有可能在映射中指定一些方法?
我认为存在性能损失,因为sql server在执行查询之前正在进行转换。
我已经尝试过这种方式(并且不起作用):http://notherdev.blogspot.com.au/2012/01/mapping-by-code-property.html
有什么想法吗?
答案 0 :(得分:1)
这是一个导致工作char(6)
字段的loquacious映射。
Property(x => x.SomeProperty,
pm =>
{
pm.Type(NHibernateUtil.AnsiString);
pm.Length(6);
pm.Column(cm => cm.SqlType("char(6)"));
});
开箱即用支持可能会更好。
答案 1 :(得分:0)
在地图文件中,您可以指定sql-type
:
<property name="SomeProperty" type="String">
<column name="ColumnName" sql-type="char(6)" />
</property>