Как перезагрузить свойство навигации «многие ко многим» в ASP.Net MVC3, используя сначала код Entity Framework - PullRequest
2 голосов
/ 19 августа 2011

Я начинаю пытаться использовать код Entity Framework сначала с ASP.Net MVC3 с классами POCO. В настоящее время я борюсь с тем, как восстановиться после исключения DbUpdateConcurrencyException, если участвующая сущность имеет свойство NavigationProperty, которое включает в себя отношение многие ко многим. Скажем, сущность называется Player и имеет свойство навигации с именем Clubs. Игрок может быть членом многих клубов, а в клубах может быть много членов.

Итак, допустим, что пока пользователь редактирует (конечно, в отрыве, это веб-приложение) его членство в клубе, администратор отменил некоторые из его членств в клубе. При вызове SaveChanges() код пользователя будет правильно выдавать DbUpdateConcurrencyException.

Теперь я хочу перезагрузить игрока , включая его клубы . Перезагрузить игрока достаточно просто с помощью dbContext.Entry(player).Reload(), но это не приводит к повторному заполнению свойства навигации "Клубы" теми клубами, которые доступны ему после вмешательства администратора.

Пожалуйста, помогите!

Ответы [ 2 ]

1 голос
/ 29 января 2012

Это должно работать.

dbContext.Entry(player).Reference(a => a.Clubs).Load()
1 голос
/ 20 августа 2011

Раньше я сталкивался с подобной проблемой, и лучшее / простое решение, которое я нашел для своего случая - учитывая, как EF решает кэшировать и перезагружать сущности, - это создать совершенно новый экземпляр DbContext и повторно загрузить данные, используя это,

...