Я пытаюсь получить запрос в методе, который выглядит следующим образом:
Public Shared Function listParticipationsByTeamCount(ByVal count As Integer, ByVal challenge As Challenge) As List(Of Participation)
Dim participationList As List(Of Participation)
If count <> Nothing And challenge IsNot Nothing Then
Using db As New DatabaseEntities()
participationList = db.Participations.Where(Function(x) x.TeamCount = count And x.Challenge.Id = challenge.Id).OrderByDescending(Function(x) x.TeamCount).ThenBy(Function(x) x.Team.Name).ToList()
End Using
End If
Return participationList
End Function
У меня есть таблица Участие , которая имеет отношение многие к 1 между таблицей Участие и Команда , и связь многие ко многим между Участие и TeamMember Таблица. На моей странице разметки я пытаюсь что-то вроде этого, когда я перебираю список следующим образом:
<% For Each participation As Participation In participationsList%>
<tr>
<td><a class="external-link" href="<%= participation.Team.Website %>"><%= participation.Team.Name%></a></td>
<td><%= participation.Percentage%>%</td>
<td>
<% For Each member As TeamMember In participation.TeamMembers%>
<%= member.Name%><br />
<% Next%>
</td>
</tr>
<% Next%>
Я получаю следующую ошибку:
Экземпляр ObjectContext был удален и больше не может использоваться для операций, требующих подключения.
Теперь я понимаю, что это потому, что я помещаю запрос в использование, и после End Using
я не могу получить связанные объекты, при поиске я попытался изменить запрос с помощью оператора следующим образом:
Using db As New DatabaseEntities()
participationList = db.Participations.Include("Team").Include("TeamMember").Where(Function(x) x.TeamCount = count And x.Team.Id = team.Id).OrderByDescending(Function(x) x.TeamCount).ThenBy(Function(x) x.Team.Name).ToList()
End Using
Это не сработало. Я также попытался загрузить ссылки на сущности так:
Using db As New DatabaseEntities()
participationList = db.Participations.Where(Function(x) x.TeamCount = count And x.Team.Id = team.Id).OrderByDescending(Function(x) x.TeamCount).ThenBy(Function(x) x.Team.Name).ToList()
For each part as Participation in participationList
part.TeamReference.Load()
part.TeamMembers.Load()
Next
End Using
Ошибка все еще сохраняется. Как я могу загрузить все эти связанные объекты в мой ParticipationList, чтобы я мог ссылаться на них еще после завершения использования I ??? Я знаю, что EF4 теперь выполняет загрузку по умолчанию, но даже когда я явно загружаю связанные объекты, он все равно не работает.
Редактировать: Спасибо за ответы на все вопросы, речь шла о том, чтобы не включать множественное число в TeamMembers, поскольку это была коллекция. Это сломало весь запрос. Итак, ответ:
Using db As New DatabaseEntities()
participationList = db.Participations.Include("Team").Include("TeamMembers").Where(Function(x) x.TeamCount = count And x.Team.Id = team.Id).OrderByDescending(Function(x) x.TeamCount).ThenBy(Function(x) x.Team.Name).ToList()
End Using