Sve*_*ang 6 .net entity-relationship entity-framework entity-framework-4
我试图在一个看起来像这样的方法中查询:
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
Run Code Online (Sandbox Code Playgroud)
我有一个Participation表,它在Participation和Team表之间有多对一的关系,并且Participation和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%>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ObjectContext实例已被释放,不能再用于需要连接的操作.
现在我理解这是因为我把查询放在一个使用中,在End Using我无法获取相关对象之后,在查看此内容时我尝试将查询的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
Run Code Online (Sandbox Code Playgroud)
这没用.我也尝试加载实体引用,如下所示:
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
Run Code Online (Sandbox Code Playgroud)
该错误仍然存在.如何将所有这些相关对象加载到我的参与列表中,这样我仍然可以在我结束后使用??? 我知道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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
438 次 |
| 最近记录: |