2009-05-15 6 views
3

SQL Server 2008에서 Filestream을 사용하여 사용자가 업로드 한 이미지를 저장하려고합니다.Sql 2008 Filestream with NHibernate

내 문제는 NHibernate는 오류가 아니지만 데이터를 데이터베이스에 저장하지 않는다는 것입니다. 레코드가 생성되지 않습니다. 어쩌면

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

     session.SaveOrUpdate(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"); 
    } 
} 

내 방법 (System.Drawing.Image와 혼동되지 않음) 사용자 정의 클래스입니다 잘못 저장하면 매핑이 꺼질 수 있습니다. ImageData는 데이터베이스의 varbinary (max) 필드입니다.

+0

그래서, 당신은 성공적으로 NHibernate와 SQL 2008 Filestream 속성을 사용하고 있습니까? 이것은 누군가가 실제로 이것을하고있는 곳에서 찾을 수있는 유일한 게시물입니다. –

+0

결국 Filestream을 사용하여 삭제되었습니다. 나는 우리가 Nhibernate에서 올바르게 작동하도록 할 수는 없다고 생각합니다. 행운을 빕니다! – Josh

+0

파일 스트림 사용에 관심이 있으시면이 답변을 살펴보십시오. http://stackoverflow.com/a/33636478/2690296 – Lee

답변

0

이에 대한 대답은 간단했습니다. save 메소드에 대한 재정의 (override)를 삭제하고 스스로 수정했습니다. 우리의 baseclass는 이미 정의 된 save 메소드를 가지고 있었고 재정의는 명백히 잘못되었습니다.

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