Свободный NHibernate: не может привести PersistentGenericBag к типу 'System.Collections.Generic.ISet` - PullRequest
0 голосов
/ 24 мая 2011

У меня есть объект Тема, представляющая собой собственную иерархию, в которой дочерние темы определены как

public class Topic : Entity {
   public ISet<Topic> ChildTopics { get; internal set; }
   public Topic ParentTopic { get; set; }
   ...
}

Я пишу форму (MVC3) для создания раскрывающегося списка (Html.DropDownListFor) тем первого уровня (теоретически это в конечном итоге превратит AJAX во второй раскрывающийся список тем второго уровня), но когда происходит сохранение, создается все более популярное исключение «Cannot cast ...» (см. заголовок вопроса).

Обычная причина этого заключается в том, что вы использовали List или Set вместо IList или ISet, но я использую ISet, и в нем конкретно говорится, что он не может быть приведен к ISet.

Причина, по которой этот набор - в том, что вы не хотите, чтобы Тема была дочерней по отношению к другой Теме более одного раза. Отображение таблицы, созданное Fluent NH automapping , корректно с этим переопределением:

mapping.HasMany<Topic>(t => t.ChildTopics).AsSet().Inverse().KeyColumn("TopicId");

1 Ответ

0 голосов
/ 09 марта 2012

В моем проекте, начиная с NHibernate 3.2.0.400, эта ошибка все еще возникает, если я использую System.Collections.Generic.ISet<T> вместо Iesi.Collections.Generic.ISet<T>.Простое изменение ссылок - это минимальная работа и решение проблемы.

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