我有一個對象定義爲這樣:ICollection的<>包含在EF作爲HashSet的失敗
public class QuestionSetAssignee
{
[Required]
public int Id { get; set; }
[Required]
public string Name { get; set; }
public virtual ICollection<QuestionSet> QuestionSets { get; set; }
public override int GetHashCode()
{
return Id.GetHashCode();
}
public override bool Equals(Object obj)
{
if (obj == null)
{
return false;
}
QuestionSetAssignee qsa = obj as QuestionSetAssignee;
return Id == qsa.Id;
}
}
以下語句:
QuestionSetAssignees.Contains(director)
在
public bool isEditable()
{
ApplicationDbContext db = new ApplicationDbContext();
QuestionSetAssignee director = db.QuestionSetAssignees.Find((int)QuestionSetAssigneeEnum.Director);
if (Conference.AcceptingDirectorApplications && QuestionSetAssignees.Contains(director))
{
return false;
}
return true;
}
返回false,據我所知,應該返回真實。 (注:Conference.AcceptingDirectorApplications返回true)
如果它不立即清除,導演對象和HashSet的對象來通過爲DynamicProxies(由於EF和對象層次)。
這裏是指揮目標:
這裏是QuestionSetAssignees對象:
我無法控制QuestionSetAsignees的類型,因爲它是由EF 6提供的(它在模型中聲明爲ICollection。這也意味着我無法提供一個比較對象(就我所知,據我所知)。我想要做的就是能夠比較兩個QuestionSetAsignee對象。我也嘗試過實現IEquatable,但那不起作用。
你可以顯示導致「QuestionSetAssignees.Contains(director)'調用的代碼嗎? –
@ScottChamberlain更新 –