NHibernate字符串映射到UTF8

时间:2012-09-15 09:46:07

标签: .net nhibernate unicode firebird

我将NHibernate与Firebird数据库一起使用,并且不确定String-Types是否正确映射。在.NET中,String-Type通常是UTF16编码的。在Firebird中,我已经定义了我的域名字符集UTF8。

所以如果我有这个Domain-Class:

public class Project
{
    public virtual Int64 ID { get; set; }
    public virtual String Name { get; set; }
}

和这个NHibernate Mapping:

<class name="Project">
<id name="Id">
  <generator class="sequence">
    <param name="sequence">MY_GEN</param>
  </generator>
</id>
<property name="Name"/>
</class>

在这种情况下,NHibernate会自动将我的System.String转换为Firebird UTF8字符串吗? 它在数据库中似乎没问题。但我不确定NHibernate的处理方式。

1 个答案:

答案 0 :(得分:1)

NHibernate的默认字符串类型使用DbType.String(Unicode字符串)保存数据。 Firebird将为您编码UTF8中的unicode字符串。

备选方案(无需进入自定义类型)将指定一个AnsiString类型,如果你使用的只是ASCII字符,它也适用于UTF8。

由于你没有指定类型,NHibernate将使用它的StringType,它将正常工作。