У меня NHibernate отношения многие ко многим. Прежде чем добавить элемент в отношение, я хочу проверить, существует ли этот элемент в коллекции. Мой метод Add выглядит как
public virtual void AddCourse(Course course)
{
if (!this.Courses.Contains(course))
{
course.Students.Add(this);
this.Courses.Add(course);
}
}
Оператор Courses.Contains (course) всегда терпит неудачу. Я немного покопался и понял, что список Courses - это список прокси NHibernate, а не объектов моего домена. Для здравомыслия я провел тест, который показал, что у меня настроено равенство для правильной работы. Тест также показал, что Contains не работает на подклассе.
Я отключил отложенную загрузку в коллекции Courses, и код работает нормально.
Итак, как вы делаете это с Lazy-загруженными объектами?