我用EF为我的数据库表格提供课程:
public partial class Course
{
public Course()
{
this.People = new HashSet<People>();
}
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Person> People { get; private set; }
}
public partial class Person
{
public int ID { get; set; }
public string Name { get; set; }
public virtual Course Course { get; set; }
}
正如你所看到的,每门课程都有一批人。我创建了第二个部分班,所以当我刷新EF图表时,我的代码不会被清除。我的问题是,我怎样才能从课程对象中清除人员名单?
我试过了:
public partial class Course
{
public void ResetCourse()
{
this.People.Clear();
}
}
但我明白这个错误:
操作失败: 无法更改关系, 原因是外钥属性中的一种或多种不可更改。 当更改关系时, 相关的外钥属性被设置为无效值。 如果外钥属性不支持无效值, 必须定义新的关系, 外钥属性必须被指定另一个非无效值, 或者必须删除不相关的对象 。
其原因显然是因为EF实际上没有删除个人对象,而只是删除SQL扔出的两者之间的关系,因为它不能有无效的钥匙。
Apparently i should use something like context.DeleteObject(person)
然而,在课程内,它没有提及上下文,我想将代码保留在对象内,使其简单化为ui代码。