سؤال

وأنا محاولة لاستخدام FILESTREAM في خادم SQL 2008 إلى الصور التي تم تحميلها مخزن المستخدم.

ومشكلتي هي التي من شأنها أن 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);
    }

وربما أنا إنقاذ خاطئ، وربما رسم الخرائط بلدي هو خارج. ImageData هو حقل ثنائي متغير (حد أقصى) في قاعدة البيانات.

هل كانت مفيدة؟

المحلول

والجواب على هذا كانت بسيطة. أنا حذف بلدي تجاوز إلى طريقة حفظ وانها ثابتة نفسها. كان لدينا بالفعل baseclass طريقة حفظ تعريف وبلدي تجاوز خاطئة تماما.

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