есть ли у nhibernate 3 проблемы с сохранением байта [] - PullRequest
0 голосов
/ 18 января 2011

в моем проекте mvc я использую nhibernate 3 в качестве orm, но у меня проблема с сохранением и загрузкой изображений, которые имеют тип byte []

public class PersonImage  : PersistentObject
{
    private string _contentType;
    private byte[] _image;

    private Person _person;


    virtual public string ContentType
    {
        get { return _contentType; }
        set
        {
            if ( value != null && value.Length > 20)
                throw new ArgumentOutOfRangeException("Invalid value for ContentType", value, value.ToString());
            _contentType = value;
        }
    }

    virtual public byte[] Image
    {
        get { return _image; }
        set { _image = value; }
    }

     }



 public class PersonImageMap : ClassMap<PersonImage>
{
    public PersonImageMap()
    {
        Schema("personnel");

        Id(p => p.Id);

        Map(p => p.Image)
            .CustomSqlType("varbinary(MAX)")
            .Not.Nullable();

        Map(p => p.ContentType)
            .Not.Nullable();

        }

}

проблема в том, что я думаю, что это изображение не может быть сохранено правильно, потому что, когда я загружаю его, я просто вижу часть изображения, а не целое изображение !!

Ответы [ 2 ]

2 голосов
/ 18 января 2011

я обнаружил, что в этом случае должен быть определен атрибут длины

 Map(p => p.Image)
            .Length(2147483647)
            .CustomSqlType("varbinary(MAX)")
            .Not.Nullable();
0 голосов
/ 18 января 2011

Я успешно сопоставил изображения (содержимое элемента управления планшетного ПК InkPicture), используя NHibernate 2.1, поэтому он, безусловно, должен работать в 3. Свойства - это байтовые массивы, а поля базы данных - varbinary (max), но я не добавляю никаких дополнительных методов к отображение:

Map(p => p.Image);

Вот и все. Я подозреваю, что вы сохраняете и извлекаете все изображение, но оно как-то обрезается в пользовательском интерфейсе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...