关系在'已删除'更新状态

时间:2016-08-12 15:42:15

标签: vb.net entity-framework entity-framework-6

在阅读了很多相似的主题后,我无法解决这个问题......

我有下一个型号......

人员:ID,姓名,城市

技能:ID,说明,Person_Id

一个人可以拥有0个以上的技能,但技能可以有1个人。

我的表单包含TextBoxs Name和City,以及与Person.Skills绑定的GridControl

在此GridControl中,您可以删除,添加或编辑行。

问题是当我删除一行并保存更改时,我收到了下一个错误:

"来自' PersonsSkills'的关系AssociationSet位于'已删除' 。状态"

当我运行方法DbContext.Skills.Remove(技能)时,一切正常,但这是最好的方法吗?我必须手动删除所有行吗?

代码:

Private DbContext As New Model()
Private person As Person

'Load Person to edit
Private Sub loadPerson()
    Dim person As Person = (From p In DbContext.Persons
                            Where p.Id = IdPerson
                            Select p).First()
End Sub

NameTextBox.Text = person.Name
CityTextBox.Text = person.City
SkillsBindingSource.DataSource = person.Skills.ToList()


'Update changes
Private Sub save()
    person.Name = NameTextBox.Text
    person.City = CityTextBox.Text
    person.Skills = Ctype(SkillsBindingSource.DataSource, List(Of Skill))
End Sub
DbContext.SaveChanges()

感谢您的帮助!

PD:抱歉我的英语...

1 个答案:

答案 0 :(得分:0)

解决!

删除行时,我运行:

DbContext.Skills.Remove(Ctype(SkillsDataBinding.Current, Skill))

在“保存”过程之后,设置导航属性,如下所示:

person.Skills = Ctype(SkillsDataBinding.DataSource, List(Of Skill))

这很简单,但我是个菜鸟。