Sql 2008 Файловый поток с NHibernate - PullRequest
3 голосов
/ 15 мая 2009

Я пытаюсь использовать Filestream в SQL Server 2008 для хранения загруженных пользователем изображений.

Моя проблема в том, что NHibernate не выдаст ошибку, но также не сохранит данные в базе данных. Запись не создана.

Класс Image ниже представляет собой пользовательский класс (не путать с 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");
    }
}

Мой метод сохранения выглядит так:

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

        session.SaveOrUpdate(image);
    }

Может быть, я сохраняю неправильно, возможно, мое отображение отключено. ImageData - это поле varbinary (max) в базе данных.

1 Ответ

0 голосов
/ 21 мая 2009

Ответ на это был прост. Я удалил свое переопределение к методу сохранения, и оно исправило себя. Наш базовый класс уже определил метод save, и мое переопределение было просто неверным.

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