2

我正在通过代码和 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

有任何想法吗?

4

2 回答 2

1

这是一个冗长的映射,它导致了一个工作char(6)领域。

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

开箱即用的支持可能会更好。

于 2013-03-24T23:24:30.750 回答
0

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

<property name="SomeProperty" type="String">
   <column name="ColumnName" sql-type="char(6)" />
</property>     
于 2013-03-24T23:01:04.447 回答