我试图解决一个问题,当使用NHibernate和使用图像列的SqlServerCeDriver时,会收到一个错误:“将字节数组截断为8000的长度。”。我找到了以下解决方案:
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 我收到了错误,但我不确定原因。
内部异常是:“无法加载类型Test.SqlServerCeDriver。可能的原因:未指定程序集名称。”
任何人都对我做错了什么有任何想法?
答案 0 :(得分:1)
在配置中定义驱动程序时,使用AssemblyQualifiedName定义它,即:
Test.SqlServerCeDriver_ImageFix, MyAssemblyThatContainsThisType