2009-05-15 13 views
3

SQL Server 2008でFilestreamを使用して、ユーザーがアップロードしたイメージを保存しようとしています。Sql 2008 Filestream with NHibernate

私の問題は、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)フィールドです。

+0

したがって、NHibernateでSQL 2008 Filestream属性を正常に使用していますか?これは、誰かが実際に行っているところで私が見つけることができる唯一の投稿です。 –

+0

最終的にFilestreamを使用して削除しました。 Nhibernateで正しく動作させることはできないと思います。がんばろう! – Josh

+0

ファイルストリームの使用に興味がある場合は、この回答をご覧ください。 http://stackoverflow.com/a/33636478/2690296 – Lee

答えて

0

これに対する答えは簡単でした。私はsaveメソッドへのオーバーライドを削除し、それ自身を修正しました。私のbaseclassには既にsaveメソッドが定義されていて、オーバーライドは単なる間違っていました。

public void Save(T entity) 
    { 
     using (ISession session = GetSession()) 
     using (ITransaction tx = session.BeginTransaction()) 
     { 
      session.SaveOrUpdate(entity); 
      tx.Commit(); 
     } 
    } 
関連する問題