C# N-Hibernate和Oracle中的长字符串导致错误
我使用oracle作为db,使用fluent Nhibernate进行映射 下面是我的对象类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; }
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");