У меня есть недоразумение где-то с Entity Framework.Этот код взят из моего модульного тестирования:
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
- это объект Entity.Что я делаю, так это сбрасываю поле RosterLink
в Team
, чтобы убедиться, что наш тест начинается в том же месте.Затем я вызываю функцию 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
= Roster Link, как я установил в модульном тесте).
Однако мой модульный тест не пройден, поскольку 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
, к вашему сведению.
Почему team.RosterLink
не показывает обновление от UpdateRosterLink
?
Спасибо
РЕДАКТИРОВАТЬ Container
мой ObjectContext
.Так я получаю доступ к информации, хранящейся в базе данных.Container.Teams
представляет мою Teams
таблицу.