我在实体框架的某处存在误解。此代码是从我的单元测试:实体模型未在SaveChanges上更新
Public Sub UpdateRosterLinkTest()
Dim target As PlayerAdmin = New PlayerAdmin()
target.PlayerAdminManager = playerAdminTestManager
target.Team = playerAdminTestManager.GetAirForceMensBB()
playerAdminTestManager.resetRosterLink(target)
Assert.IsNull(target.Team.RosterLink)
Dim playerAdmin As PlayerAdmin = New PlayerAdmin()
playerAdmin.TeamId = 12434
playerAdmin.RosterLink = "Roster Link"
playerAdmin.UpdateRosterLink()
Dim team As DAL.Team = playerAdminTestManager.GetAirForceMensBB()
Assert.AreEqual("Roster Link", team.RosterLink)
End Sub
我创建一个PlayerAdmin
,这是一个模型类。 target.Team
是一个实体对象。我所做的就是重置Team
中的RosterLink
字段,以确保我们的测试在相同的地方开始。然后我打电话给UpdateRosterLink()
函数。这看起来像:
Function UpdateRosterLink() As Integer
If (PlayerAdminManager Is Nothing) Then
PlayerAdminManager = New PlayerAdminManager()
End If
Team = PlayerAdminManager.GetTeamByTeamId(TeamId)
Team.RosterLink = RosterLink
Dim numberOfChanges As Integer = PlayerAdminManager.SaveChanges()
Return numberOfChanges
End Function
当我运行这段代码,我可以看到保存在SQL Server的这个是直接从(RosterLink
=名册链接,就像我在单元测试中设置)的变化。
但是,我的单元测试失败,因为team.RosterLink
仍然是Nothing
。 GetAirForceMensBB()
返回Team
与TeamId = 12434功能:
Function GetAirForceMensBB() As DAL.Team
Return (From team In Container.Teams Where team.TeamId = 12434).SingleOrDefault
End Function
我敢肯定,我使用的是实体框架错误,它可能有事情做的事实,我打电话在不同的地方PlayerAdminTestManager
,但我不明白为什么。虽然,我将PlayerAdminManager
设置为PlayerAdminTestManager
。 PlayerAdminTestManager
延伸PlayerAdminManager
,fyi。
为什么team.RosterLink
未显示UpdateRosterLink
的更新?
感谢
编辑 Container
是我ObjectContext
。这就是我如何访问存储在数据库中的信息。 Container.Teams
代表我的Teams
表。
Container.Teams中的内容是什么? –
@AdamTuliper - 这是我的数据库中的“Teams”表格 –
您确定该集合中有任何内容吗?设置一个断点。还要确保有一个id = 12434的地方。如果您将SingleOrDefaiult更改为Single(),那么如果您没有任何团队,它会炸毁,然后您会知道问题出在哪里。 –