Frage

Ich versuche, Filestream zu verwenden, in SQL Server 2008 zum Speichern von Benutzern Bildern hochgeladen.

Mein Problem ist, dass NHibernate wird nicht Fehler, aber es wird auch nicht die Daten in der Datenbank speichern. Kein Datensatz erstellt wird.

Die Image-Klasse ist eine benutzerdefinierte Klasse

(nicht mit System.Drawing.Image verwechselt wird)
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");
    }
}

Meine Methode sieht wie folgt zu speichern:

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

        session.SaveOrUpdate(image);
    }

Vielleicht falsch Ich spare, vielleicht mein Mapping ist ausgeschaltet. Imagedata ist ein varbinary (max) Feld in der Datenbank.

War es hilfreich?

Lösung

Die Antwort auf diese war einfach. Ich löschte meine Überschreibung der Methode speichern und fixiert sich. Unsere Basisklasse hatte bereits die Save-Methode definiert und meine Überschreibung war einfach falsch.

public void Save(T entity)
    {
        using (ISession session = GetSession())
        using (ITransaction tx = session.BeginTransaction())
        {
            session.SaveOrUpdate(entity);
            tx.Commit();
        }
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top