I am using oracle as db and fluent Nhibernate for mapping.
Below is my Object Class
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; }
}
The length of property EventScript can be from 0 to 4000. In the database I made the column type for EventScript a CLOB.
Below is my mapping Class:
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");
}
Now whenever the length of EventScript is greater than 2000 I get the error "ORA-01461: can bind a LONG value only for insert into a LONG column ." while saving the object into database. Can anyone help on this.
This is a known issue with the .NET provided
System.Data.OracleClient.OracleConnection
driver. The fix is either to use the Oracle provided ODP.net clientOracle.DataAccess.Client.OracleConnection
(see: http://nuget.org/packages/odp.net.x86/) or use the following workaround (referenced from: http://thebasilet.blogspot.be/2009/07/nhibernate-oracle-clobs.html).You need to update your
SessionFactory
to use this driver, as well as update any of your clob mappings to useStringClob
custom type