2009-09-17 8 views
1

En essayant de résoudre un problème où lors de l'utilisation de NHibernate avec un SqlServerCeDriver qui utilise une colonne d'image, vous recevez une erreur: "Troncature de tableau d'octets à une longueur de 8000.". J'ai trouvé la solution suivante:NHibernate: Impossible de créer le pilote à partir de Test.SqlServerCeDriver_ImageFix

http://mgeorge-notes.blogspot.com/2009/05/nhibernate-mapping-from-binary-to.html

et a créé la classe suivante:

namespace Test 
{ 
    public class SqlServerCeDriver_ImageFix : SqlServerCeDriver 
    { 
     protected override void InitializeParameter(IDbDataParameter dbParam, string name, SqlType sqlType) 
     { 
      base.InitializeParameter(dbParam, name, sqlType); 

      if (sqlType is BinarySqlType) 
      { 

       PropertyInfo dbParamSqlDbTypeProperty = dbParam.GetType().GetProperty("SqlDbType"); 

       dbParamSqlDbTypeProperty.SetValue(dbParam, SqlDbType.Image, null); 

      } 

     } 

    } 
} 

Mais quand je change la cartographie NHibernate de NHibernate.Driver.SqlServerCeDriver à Test.SqlServerCeDriver_ImageFix I obtenir l'erreur, mais je ne sais pas pourquoi.

L'exception interne est: "Impossible de charger le type Test.SqlServerCeDriver Cause possible: aucun nom d'assembly spécifié."

Quelqu'un at-il des idées sur ce que je fais mal?

Répondre

1

Lors de la définition du pilote dans la configuration, définir avec le AssemblyQualifiedName, i.e. .:

Test.SqlServerCeDriver_ImageFix, MyAssemblyThatContainsThisType 
+0

Cela a fonctionné comme un charme. Je vous remercie! – Kyle

Questions connexes