2017-03-01 92 views
0

我的代碼:映射大串功能NHibernate 2

public SendOrderMap() 
{ 
    Table("Sendorder"); 
    Id(s => s.ID).GeneratedBy.Sequence("SEQ_SendOrder"); 
    Map(s => s.YBID); 
    Map(s => s.TITLE); 
    Map(s => s.MESSAGE).CustomSqlType("NCLOB").CustomType("StringClob"); 
} 

當它依賴FluentNHibernate 1.3 + NHibernate4.0,這是OK!

但現在我用FluentNHibernate 2.0.3 + NHibernate4.1.1,這是錯誤的!錯誤提示:

ORA-01461:只能用於插入結合long值轉換爲一個LONG列 提示

我能做些什麼?

+0

可能的重複[長字符串在N-Hibernate與Oracle導致錯誤](http://stackoverflow.com/questions/8737680/long-strings-in-n-hibernate-with-oracle-cause-error) –

+0

這種試圖錯誤地使用'LONG'來升級CLOB或NCLOB的行爲是Oracle管理驅動程序的一個已知錯誤,具有如上面鏈接的問題答案中所寫的解決方法。如果您認爲案件有所不同,請提供更多信息,例如哪些代碼行觸發錯誤,哪些Oracle語言和驅動程序正在使用中...... –

回答

0

我有幾乎完全相同的問題。 我場是這樣映射:

Map(Function(x) x.Remark, "REMARK").Length(4000) 

而對於的長度大於1000個字符的這句話串中插入值的時候,我得到了相同的錯誤原來的海報:

"ORA-01461: can bind a LONG value only for insert into a LONG column" 

我解決了它很容易:

  • 更新NHibernate的,以v4.1.1.4000
  • 更新功能NHibernate到V2.0.3
  • 更新Oracle.ManagedDataAccess到v12.1.24160719

它看起來像甲骨文已經固定在管理驅動程序已知的錯誤!