Pregunta

Estoy intentando utilizar Filestream en SQL Server 2008 para almacenar imágenes subidas por el usuario.

Mi problema es que no va a NHibernate error, pero también no guardará los datos en la base de datos. No se crea ningún registro.

La clase imagen de abajo es una clase personalizada (que no debe confundirse con System.Drawing.Image)

public class ImageMap : ClassMap<Image>
{
    public ImageMap()
    {
        WithTable("Images");

        Id(x => x.ImageId).GeneratedBy.GuidComb().WithUnsavedValue(Guid.Empty);

        Map(x => x.ImageData);
        Map(x => x.Extension);

        References(x => x.Owner, "UserId");
    }
}

Mi método para guardar el aspecto siguiente:

public void Save(Image image)
    {
        ISession session = GetSession();

        session.SaveOrUpdate(image);
    }

Tal vez estoy ahorrando equivocado, tal vez mi asignación está apagado. ImageData es un campo varbinary (max) en la base de datos.

¿Fue útil?

Solución

La respuesta a esto es simple. He eliminado mi anulación para el método Save y se fijó. Nuestra clase base ya tenía el método save define y mi anulación era simplemente errónea.

public void Save(T entity)
    {
        using (ISession session = GetSession())
        using (ITransaction tx = session.BeginTransaction())
        {
            session.SaveOrUpdate(entity);
            tx.Commit();
        }
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top