2009-05-15 7 views
3

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

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

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

+0

Итак, успешно ли вы используете атрибут Filestream SQL 2008 с NHibernate? Это единственный пост, который я могу найти там, где кто-то действительно делает это. –

+0

Мы в конечном итоге упали с помощью Filestream. Я считаю, что мы никогда не смогли заставить его работать с Nhibernate. Удачи! – Josh

+0

Вы можете посмотреть этот ответ, если вы заинтересованы в использовании фильтра http://stackoverflow.com/a/33636478/2690296 – Lee

ответ

0

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

public void Save(T entity) 
    { 
     using (ISession session = GetSession()) 
     using (ITransaction tx = session.BeginTransaction()) 
     { 
      session.SaveOrUpdate(entity); 
      tx.Commit(); 
     } 
    } 
Смежные вопросы