NHibernate:为查询参数显式设置数据类型和长度

本文关键字:数据类型 设置 查询 参数 NHibernate | 更新日期: 2023-09-27 18:05:53

我使用NHibernate映射代码和sql server 2012。我还使用Sql2008ClientDriver作为会话工厂中的驱动程序。我一直在试图找出如何将精确的sql类型和长度映射到代表表的c#对象。我得到的问题是在生成的sql中指定的数据类型,特别是字符串。

例如:

公共虚拟字符串SomeProperty {get;设置;}

在生成查询时,这转换为一个nvarchar(4000)参数,但该列在数据库中是一个char(6)。是否可以在映射中以某种方式指定这个?

我相信有性能损失,因为sql server在执行查询之前正在进行转换。

我试过这个(它不工作):http://notherdev.blogspot.com.au/2012/01/mapping-by-code-property.html

任何想法?

NHibernate:为查询参数显式设置数据类型和长度

这是一个生成工作char(6)字段的清晰映射。

Property(x => x.SomeProperty,
         pm =>
         {
             pm.Type(NHibernateUtil.AnsiString);
             pm.Length(6);
             pm.Column(cm => cm.SqlType("char(6)"));
         });

在您的映射文件中您可以指定sql-type:

<property name="SomeProperty" type="String">
   <column name="ColumnName" sql-type="char(6)" />
</property>