Что вызывает «Недопустимый индекс nn для этой SqlParameterCollection с Count = nn», когда столбец равен нулю в базе данных? - PullRequest
4 голосов
/ 01 февраля 2011

Для объекта «Размещение» у нас есть два столбца, которые можно обнулять: CollectionType и AccommodationUnitType.

Однако в данных я заметил, что они были установлены на ноль, а не на ноль, в результате чего NHibernate попытался найти сущность с идентификатором 0. Это было много лишних ненужных вызовов БД, поэтому я обновил соответствующие данные до NULL в базы данных, и вдруг я получаю большую жирную ошибку:

"Неверный индекс 24 для этого SqlParameterCollection with Count = 24 "

Вот переопределение отображения, которое я использую:

    public void Override(AutoMapping<Core.Entities.Itinerary.Accommodation.Accommodation> mapping)
    {
        ...
        mapping.References(x => x.CollectionType).Nullable();//.Not.LazyLoad();
        mapping.References(x => x.AccommodationUnitType).Nullable();//.Not.LazyLoad();
        Cache.Is(c => c.ReadWrite());
    }

У Google много ответов, которые, похоже, не имеют отношения к моей проблеме.

Есть идеи?

Редактировать Для информации свойства являются сущностями, поэтому можно обнулять:

public virtual AccommodationUnitType AccommodationUnitType { get; set; }
public virtual AccommodationCollectionType CollectionType { get; set; }

1 Ответ

5 голосов
/ 08 февраля 2011

Обозначаются ли «CollectionType» и «AccommodationUnitType» как «int»?

При работе с пустыми значениями вам необходимо обозначить их оба как «int?».

Не уверен, еслиэто ваша проблема, но она исправила что-то похожее для меня.

public virtual int? CollectionType {get;set;}
public virtual int? AccommodationUnitType {get;set;}
...