2009-09-17 82 views
1

我试图解决一个问题,当与使用图像列的SqlServerCeDriver一起使用NHibernate时,您会收到一个错误:“Byte array truncation to a length of 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.Driver.SqlServerCeDriver 改变NHibernate的映射 Test.SqlServerCeDriver_ImageFix 我得到错误,但我不知道为什么。

内部异常是:“无法加载类型Test.SqlServerCeDriver。可能的原因:没有指定程序集名称。”

任何人有什么想法做什么即时通讯做错了?

回答

1

当定义在配置驱动器,与AssemblyQualifiedName定义它,即:

Test.SqlServerCeDriver_ImageFix, MyAssemblyThatContainsThisType 
+0

这工作就像一个魅力。谢谢! – Kyle 2009-09-17 13:53:50

相关问题