Pergunta

Eu estou tentando usar Filestream no sql server 2008 para imagens enviadas armazenamento do usuário.

Meu problema é que NHibernate não vai erro, mas também não vai salvar os dados no banco de dados. Nenhum registro é criado.

A classe imagem abaixo é uma classe personalizada (para não ser confundido com 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");
    }
}

Meu método para salvar parecido com este:

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

        session.SaveOrUpdate(image);
    }

Talvez eu estou economizando errado, talvez o meu mapeamento está desligado. ImageData é um campo varbinary (max) no banco de dados.

Foi útil?

Solução

A resposta a esta era simples. Eu apaguei a minha substituição para o método save e fixa-se. Nossos baseclass já tinha o método save definido e minha substituição foi apenas errado liso.

public void Save(T entity)
    {
        using (ISession session = GetSession())
        using (ITransaction tx = session.BeginTransaction())
        {
            session.SaveOrUpdate(entity);
            tx.Commit();
        }
    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top