我有一個NHibernate多對多關係。在將項目添加到關係之前,我想測試該項目是否已存在於集合中。我的添加方法看起來像當NHibernate使用代理元素填充MyList時,你如何使用MyList.Contains(MyObject)
public virtual void AddCourse(Course course)
{
if (!this.Courses.Contains(course))
{
course.Students.Add(this);
this.Courses.Add(course);
}
}
Courses.Contains(course)語句總是失敗。我已經做了一些挖掘,並意識到課程列表是一個NHibernate代理列表,而不是我的域對象。爲了我的理智,我進行了一項測試,表明我有平等的設定能夠正確工作。測試還顯示Contains不能用於子類。
我已經在課程集合上禁用了延遲加載,並且代碼工作正常。
那麼,你如何做到這一點與惰性加載對象?使用Course
的獨特性能
if (!this.Courses.Any(r => r.GetHashCode() == course.GetHashCode()))
檢查:
我已經使用這種方法的時間,但它仍然感覺像一個黑客。 – 2010-12-14 12:20:38