C# N-Hibernate和Oracle中的长字符串导致错误

C# N-Hibernate和Oracle中的长字符串导致错误,c#,oracle,nhibernate,fluent-nhibernate,C#,Oracle,Nhibernate,Fluent Nhibernate,我使用oracle作为db,使用fluent Nhibernate进行映射 下面是我的对象类 public class UserFieldEvent { public virtual int Id { get; set; } public virtual UserFieldBase UserField { get; set; } public virtual EventType EventType { get; set; }

我使用oracle作为db,使用fluent Nhibernate进行映射

下面是我的对象类

 public class UserFieldEvent
    {
        public virtual int Id { get; set; }
        public virtual UserFieldBase UserField { get; set; }
        public virtual EventType EventType { get; set; }
        public virtual string EventScript { get; set; }
    }
属性EventScript的长度可以从0到4000。 在数据库中,我将EventScript的列类型设置为CLOB

下面是我的映射类:

public UserFieldEventMap()
        {
            Table("TBLDS_USERFIELDEVENT");
            Id(x => x.Id).GeneratedBy.Sequence("SEQDS_USERFIELDEVENT");
            Map(x => x.EventType).CustomType<EventType>();
            Map(x =>  x.EventScript).CustomSqlType("CLOB");
            References(x => x.UserField).Column("USERFIELDBASEID");
        }
public UserFieldEventMap()
{
表(“TBLDS_USERFIELDEVENT”);
Id(x=>x.Id).GeneratedBy.Sequence(“SEQDS_USERFIELDEVENT”);
映射(x=>x.EventType).CustomType();
Map(x=>x.EventScript);
引用(x=>x.UserField).Column(“USERFIELDBASEID”);
}

现在,每当EventScript的长度大于2000时,在将对象保存到数据库中时,就会出现错误“ORA-01461:只能为插入到长列中绑定长值”。有人能帮上忙吗。

这是.NET提供的
System.Data.OracleClient.OracleConnection
驱动程序的一个已知问题。修复方法是使用Oracle提供的ODP.net客户端
Oracle.DataAccess.client.OracleConnection
(请参见:)或使用以下解决方法(参考:)

您需要更新
SessionFactory
以使用此驱动程序,还需要更新任何clob映射以使用
StringClob
自定义类型

Map(x => x.EventType).CustomSqlType("Clob").CustomType("StringClob");
Map(x => x.EventType).CustomSqlType("Clob").CustomType("StringClob");