En los casos en que se necesite persistir datos VarBinary a través de NHibernate, se debe modificar el mapeo por defecto de la entidad que corresponda para indicar explícitamente la máxima longitud permitida para el array de bytes que en definitiva se persiste en bd.
Como ejemplo, el proyecto Themis tiene la entidad Attachment cuya propiedad Content almacena el archivo adjuntado como un arreglo de bytes. Es decir:
public class Attachment : Entity
{
public virtual byte[] Content { get; set; }
}
Para poder persistir archivos grandes sin problemas, se debe modificar la máxima longitud del arreglo de bytes ya que la misma por defecto es de 8000:
public class AttachmentMap : IAutoMappingOverride<Attachment>
{
public void Override(AutoMapping<Attachment> mapping)
{
// Cambiar el tamaño de 8000 bytes a 256MB
mapping.Map(c => c.Content).Length(268435456);
}
}
De esta forma, al generarse el script de creación de tablas el campo Content de la tabla Attachments de definirá como VARBINARY(MAX) y se podrán persistir y recuperar archivos de hasta 256MB.