Tengo un campo varbinary en mi base de datos del servidor sql que debe ser varbinary (max). Creo mi base de datos con NHibernate y uso Fluent Nhibernate para mis asignaciones.Fluido NHibernate, varbinary (max) y SQLite
También uso SQLite para mis pruebas unitarias, utilizo las mismas asignaciones. Solo cambio la configuración antes de crear la base de datos en la memoria.
Me aparece el siguiente problema.
he creado este método de extensión:
public static IProperty WithMaxVarBinaryLength(this IProperty propertyMap)
{
return propertyMap.CustomSqlTypeIs("varbinary(max)");
}
Funciona bien en mi sitio web, la base de datos se crea con un campo varbinary (max), pero cuando corro mis pruebas de unidad me sale el siguiente excepción
System.Data.SQLite.SQLiteException: SQLite error near "max": syntax error
Entonces me encontré en otra pregunta en stackOverflow que podemos hacer esto para crear un varbinary (max):
public static IProperty WithMaxLength(this IProperty propertyMap)
{
return propertyMap.WithLengthOf(1000);
}
pero me da esta excepción:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.InvalidOperationException: Content is not a string. at FluentNHibernate.Mapping.PropertyMap.WithLengthOf(Int32 length) in d:\Builds\FluentNH\src\FluentNHibernate\Mapping\PropertyMap.cs:line 166
Por el momento estoy fuera de la idea, yo no quiero tener que crear manualmente todos mis scripts de base y quiero seguir usando SQLite para mis pruebas unitarias.
Gracias por la ayuda.
Por cierto, aquí está mi mapeo completo, tenga en cuenta que utilicé mis métodos de extensión.
public class AttachmentFileMap : ClassMap<AttachmentFile>
{
public AttachmentFileMap()
{
WithTable("AttachmentFiles");
Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.Content).WithMaxVarBinaryLength();
Map(x => x.ContentType);
Map(x => x.FileName);
Map(x => x.ContentLength);
}
}
contenido es un byte []
Charles