2016-08-12 2 views
0

После чтения много Similary тем, я не могу решить эту проблему ...Связь находится в «Deleted» состоянии по обновлению

У меня есть следующая модель ...

Persons: Id, Name, City

навыки: Id, описание, person_id

человек может иметь 0 о более навыков, но умение может иметь 1 человек.

Моя форма содержит полей ввода Имя и город, и GridControl связанный с Person.Skills

В этом GridControl у можно удалять, добавлять или редактировать строк.

Проблема заключается в том, когда я удалить строку и сохранить изменения, я получил следующую ошибку:

«Отношения с AssociationSet-х PersonsSkills" находится в „Deleted“ состояние»

Когда я запускаю метод 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 ...

ответ

0

Решено!

При удалении строки, я бегу:

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

После, в процедуре "Сохранить", установить навигационное свойство как это:

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

Это было просто, но я m a noob.

Смежные вопросы