【问题标题】:A relationship is in the 'Deleted' state on updating关系在更新时处于“已删除”状态
【发布时间】:2016-08-12 15:42:14
【问题描述】:

看了很多类似的题目,我都解决不了这个问题……

我有下一个模型...

人员: ID、姓名、城市

技能: ID、描述、Person_Id

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

我的表单包含 TextBox 名称和城市,以及与 Person.Skills 绑定的 GridControl

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

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

“来自‘PersonsSkills’ AssociationSet 的关系处于‘已删除’状态。”

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

代码:

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:对不起,我的 baaad 英语......

【问题讨论】:

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


    【解决方案1】:

    解决了!

    当一行被删除时,我运行:

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

    之后,在“保存”过程中,像这样设置导航属性:

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

    这很简单,但我是菜鸟。

    【讨论】:

      猜你喜欢
      • 2013-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多