2017-03-01 1 views
0

mon code:Mapping grande chaîne avec Fluent 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"); 
} 

lorsqu'elle dépend FluentNHibernate 1.3 + NHibernate4.0, il est OK! Mais maintenant j'utilise FluentNHibernate 2.0.3 + NHibernate 4.1.1, c'est faux! conseil d'erreur:

ORA-01461: peut lier une valeur à long que pour l'insertion dans une colonne LONG conseils

Que puis-je faire?

+0

Possibilité de duplication de [Longues chaînes dans N-Hibernate avec Oracle cause une erreur] (http://stackoverflow.com/questions/8737680/long-strings-in-n-hibernate-with-oracle-cause-error) –

+0

Ce comportement d'essayer d'utiliser par erreur 'LONG' pour monter un' CLOB' ou 'NCLOB' est un bogue connu du pilote géré par Oracle, ayant des solutions de contournement telles qu'écrites dans la réponse à la question ci-dessus liée. Si vous pensez que votre cas est différent, veuillez fournir plus d'informations, telles que les lignes de code qui déclenchent l'erreur, le dialecte et le pilote Oracle utilisés, ... –

Répondre

0

J'ai eu presque le même problème. Mon champ a été mis en correspondance comme ceci:

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

Et lors de l'insertion des valeurs pour cette chaîne Remarque qui étaient plus de 1000 caractères, je me suis la même erreur que l'affiche originale:

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

Je l'ai résolu très facilement:

  • Mise à jour NHibernate v4.1.1.4000
  • Mise à jour Courant NHibernate v2.0.3
  • Mise à jour Oracle.ManagedDataAccess à v12.1.24160719

Il ressemble à Oracle a fixé le bug connu dans le pilote géré!