Domanda

Sto tentando di utilizzare Filestream in sql server 2008 immagini caricate archivio utenti.

Il mio problema è che NHibernate non errore, ma anche non salverà i dati nel database. Non viene creato alcun record.

La classe immagine qui sotto è una classe personalizzata (da non confondere 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");
    }
}

Il mio metodo per salvare assomiglia a questo:

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

        session.SaveOrUpdate(image);
    }

Forse sto salvando sbagliato, forse la mia mappatura è spento. ImageData è un campo varbinary (max) nel database.

È stato utile?

Soluzione

La risposta a questo è stato semplice. Ho eliminato il mio override il metodo Save ed esso stesso fissato. La nostra baseclass aveva già il metodo save definito e la mia esclusione era semplicemente sbagliato.

public void Save(T entity)
    {
        using (ISession session = GetSession())
        using (ITransaction tx = session.BeginTransaction())
        {
            session.SaveOrUpdate(entity);
            tx.Commit();
        }
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top