2009-05-15 7 views
3

Je tente d'utiliser Filestream dans SQL Server 2008 pour stocker les images téléchargées par l'utilisateur.Sql 2008 Filestream avec NHibernate

Mon problème est que NHibernate n'effectuera pas d'erreur, mais ne sauvegardera pas non plus les données dans la base de données. Aucun enregistrement n'est créé.

La classe image ci-dessous est une classe personnalisée (à ne pas confondre avec 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"); 
    } 
} 

Ma méthode pour sauver ressemble à ceci:

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

     session.SaveOrUpdate(image); 
    } 

Peut-être que je suis sauver mal, peut-être ma cartographie est désactivée. ImageData est un champ varbinary (max) dans la base de données.

+0

Alors, utilisez-vous avec succès l'attribut SQL 2008 Filestream avec NHibernate? C'est le seul article que je peux trouver où quelqu'un est en train de faire ça. –

+0

Nous avons finalement abandonné en utilisant Filestream. Je crois que nous n'avons jamais pu le faire fonctionner correctement avec Nhibernate. Bonne chance! – Josh

+0

Vous pouvez consulter cette réponse si vous êtes intéressé par l'utilisation du flux de fichiers http://stackoverflow.com/a/33636478/2690296 – Lee

Répondre

0

La réponse à cette question était simple. J'ai supprimé mon override à la méthode de sauvegarde et il s'est corrigé. Notre base de données avait déjà la méthode save définie et mon override était tout simplement faux.

public void Save(T entity) 
    { 
     using (ISession session = GetSession()) 
     using (ITransaction tx = session.BeginTransaction()) 
     { 
      session.SaveOrUpdate(entity); 
      tx.Commit(); 
     } 
    }