Question

Je cherche à utiliser Filestream dans le serveur SQL Server 2008 à l'utilisateur de stocker des images téléchargées.

Mon problème est que NHibernate ne sera pas l'erreur, mais il ne sera pas aussi enregistrer les données dans la base de données. Aucun enregistrement 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 sauve le mal, peut-être ma carte est désactivée. ImageData est un champ varbinary (max) dans la base de données.

Était-ce utile?

La solution

La réponse à c'était simple. Je supprimé mon remplacement à la méthode de sauvegarde et elle se fixe. Notre baseclass avait déjà la méthode de sauvegarde définie et mon remplacement était tout simplement faux.

public void Save(T entity)
    {
        using (ISession session = GetSession())
        using (ITransaction tx = session.BeginTransaction())
        {
            session.SaveOrUpdate(entity);
            tx.Commit();
        }
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top