在阅读了很多相似的主题后,我无法解决这个问题......
我有下一个型号......
人员: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:抱歉我的英语...答案 0 :(得分:0)
解决!
删除行时,我运行:
DbContext.Skills.Remove(Ctype(SkillsDataBinding.Current, Skill))
在“保存”过程之后,设置导航属性,如下所示:
person.Skills = Ctype(SkillsDataBinding.DataSource, List(Of Skill))
这很简单,但我是个菜鸟。