문제

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

내 문제는 nhibernate가 오류가 아니지만 데이터를 데이터베이스에 저장하지는 않는다는 것입니다. 레코드가 만들어지지 않습니다.

아래 이미지 클래스는 사용자 정의 클래스입니다 (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);
    }

어쩌면 내가 틀렸을 수도 있고, 내지도가 꺼져있을 수도 있습니다. Imageata는 데이터베이스의 Varbinary (Max) 필드입니다.

도움이 되었습니까?

해결책

이것에 대한 대답은 간단했습니다. 저장 메소드로 재정의를 삭제하고 자체적으로 수정했습니다. 우리의베이스 클래스는 이미 저장 방법을 정의했으며 내 재정의는 명백한 잘못이었습니다.

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