NHibernateはとSQL 2008ファイルストリーム
-
22-08-2019 - |
質問
私は店のユーザーがアップロードした画像に、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)のフィールドです。
解決
これに対する答えは簡単でした。私は、Saveメソッドに私のオーバーライドを削除し、それが自分自身を修正しました。私たちの基本クラスは、既に保存法に定義され、私のオーバーライドが単純に間違ったを持っています。
public void Save(T entity)
{
using (ISession session = GetSession())
using (ITransaction tx = session.BeginTransaction())
{
session.SaveOrUpdate(entity);
tx.Commit();
}
}
所属していません StackOverflow