2009-05-15 10 views
3

Ich versuche Filestream in SQL Server 2008 zu verwenden, um hochgeladene Benutzerbilder zu speichern.Sql 2008 Filestream mit NHibernate

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

Die Image-Klasse ist eine benutzerdefinierte Klasse

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 zu speichern sieht wie folgt aus (nicht mit System.Drawing.Image verwechseln):

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

     session.SaveOrUpdate(image); 
    } 

Vielleicht bin ich falsch gespeichert, vielleicht ist mein Mapping deaktiviert. ImageData ist ein varbinary (max) -Feld in der Datenbank.

+0

Verwenden Sie das SQL 2008 Filestream Attribut erfolgreich mit NHibernate? Dies ist der einzige Beitrag, den ich finden kann, wenn jemand dies tatsächlich tut. –

+0

Wir haben schließlich Filestream fallengelassen. Ich glaube, wir konnten es nie richtig mit Nhibernate arbeiten lassen. Viel Glück! – Josh

+0

Sie können sich diese Antwort ansehen, wenn Sie den Filestream http://stackoverflow.com/a/33636478/2690296 verwenden möchten – Lee

Antwort

0

Die Antwort darauf war einfach. Ich habe meine Überschreibung auf die Speichermethode gelöscht und sie hat sich selbst repariert. In unserer Basisklasse war die Speichermethode bereits 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(); 
     } 
    }