我将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的处理方式。
答案 0 :(得分:1)
NHibernate的默认字符串类型使用DbType.String(Unicode字符串)保存数据。 Firebird将为您编码UTF8中的unicode字符串。
备选方案(无需进入自定义类型)将指定一个AnsiString类型,如果你使用的只是ASCII字符,它也适用于UTF8。
由于你没有指定类型,NHibernate将使用它的StringType,它将正常工作。