3

ユーザーがアップロードした画像を保存するために、SQL Server 2008 で Filestream を使用しようとしています。

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

4

1 に答える 1

0

これに対する答えは簡単でした。save メソッドへのオーバーライドを削除したところ、それ自体が修正されました。私たちの基底クラスにはすでに save メソッドが定義されており、私のオーバーライドは明らかに間違っていました。

public void Save(T entity)
    {
        using (ISession session = GetSession())
        using (ITransaction tx = session.BeginTransaction())
        {
            session.SaveOrUpdate(entity);
            tx.Commit();
        }
    }
于 2009-05-21T15:41:48.413 に答える