2009-09-17 2 views
1

Я пытаюсь решить проблему, когда при использовании NHibernate с SqlServerCeDriver, который использует столбец изображения, вы получаете сообщение об ошибке: «Усечение байтового массива длиной до 8000». Я нашел следующее решение:NHibernate: Не удалось создать драйвер из Test.SqlServerCeDriver_ImageFix

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

И создал следующий класс:

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); 

      } 

     } 

    } 
} 

Но когда я изменить отображение NHibernate из NHibernate.Driver.SqlServerCeDriver к Test.SqlServerCeDriver_ImageFix I получить ошибку, но я не уверен, почему.

Внутреннее исключение: «Не удалось загрузить тип Test.SqlServerCeDriver. Возможная причина: имя сборки не указано».

У кого-нибудь есть идеи относительно того, что я делаю неправильно?

ответ

1

При определении драйвера в конфигурации, определить его с AssemblyQualifiedName, т.е .:

Test.SqlServerCeDriver_ImageFix, MyAssemblyThatContainsThisType 
+0

, который работал как шарм. Спасибо! – Kyle

Смежные вопросы