質問

私は店のユーザーがアップロードした画像に、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();
        }
    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top