带有Oracle Blob字段的NHibernate架构导出问题

带有Oracle Blob字段的NHibernate架构导出问题,oracle,nhibernate,types,nhibernate-mapping,Oracle,Nhibernate,Types,Nhibernate Mapping,我在使用NHibernate的schemaexport函数创建Oracle数据库时遇到问题。 对于定义为byte[]的属性,它将创建类型为RAW的DB字段(顺便说一句,限制为2000 byte)。 这个字段类型不足以满足我的需要,我需要创建一个blob字段。 我怎样才能做到? 我尝试在映射文件中声明字段(我使用xml映射,因此使用hbm文件),指定type=“Binary”和type=“BinaryBlob”,但这些都没有达到预期效果:创建的字段始终是原始字段。 有人能帮我吗? <prop

我在使用NHibernate的schemaexport函数创建Oracle数据库时遇到问题。 对于定义为byte[]的属性,它将创建类型为RAW的DB字段(顺便说一句,限制为2000 byte)。 这个字段类型不足以满足我的需要,我需要创建一个blob字段。 我怎样才能做到? 我尝试在映射文件中声明字段(我使用xml映射,因此使用hbm文件),指定type=“Binary”和type=“BinaryBlob”,但这些都没有达到预期效果:创建的字段始终是原始字段。 有人能帮我吗?


<property name="prop">
  <column name="blobcolumn" sql-type="BinaryBlob">
</property>
更新:也许这也可以达到目的

<property name="prop" type="Binary" length="1000000"/>

我遇到了类似的问题,解决方案是长度属性:

<property name="Attachment" length="5224880"/>
正确的映射应该是

<property name="Attachment" length="5224880"/>


或者,如果有人想要在数据库中将byte[]类型转换为BLOB的常规方法,您可以在Nhibernate的代码库(源代码)中浏览OracleLiteDialogue.cs,我提出了以下建议:

public class ByteArrayToDbBlobConvention : IPropertyConvention, IPropertyConventionAcceptance
{
    public void Accept(IAcceptanceCriteria<IPropertyInspector> criteria)
    {
        criteria.Expect(x => x.Type == typeof(byte[]));            
    }

    public void Apply(IPropertyInstance instance)
    {
        instance.CustomSqlType("BLOB");
    }
}
公共类ByteArrayToDbBlobConvention:IPropertyConvention,IPropertyConvention Acceptance
{
公共无效接受(IAcceptanceCriteria标准)
{
Expect(x=>x.Type==typeof(byte[]);
}
公共无效应用(IPropertyInstance实例)
{
CustomSqlType(“BLOB”);
}
}

您能告诉我在哪里可以找到sql类型的可能值吗?与
type=“BinaryBlob”
有什么区别?
sql type
用于指定数据库中存在的数据库类型。我不知道是否有预定义的值,或者在sqlcreatescript中它是否仅作为字符串发送
public class ByteArrayToDbBlobConvention : IPropertyConvention, IPropertyConventionAcceptance
{
    public void Accept(IAcceptanceCriteria<IPropertyInspector> criteria)
    {
        criteria.Expect(x => x.Type == typeof(byte[]));            
    }

    public void Apply(IPropertyInstance instance)
    {
        instance.CustomSqlType("BLOB");
    }
}