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

时间:2013-03-24 22:52:55

标签: c# nhibernate mapping-by-code

我正在使用代码和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

有什么想法吗?

2 个答案:

答案 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>