Модель сущностей не обновляется в SaveChanges - PullRequest
0 голосов
/ 01 декабря 2011

У меня есть недоразумение где-то с 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 таблицу.

1 Ответ

0 голосов
/ 06 декабря 2011

Проблема заключалась в том, что я ссылался на разные экземпляры Контейнера (каждый менеджер создал свой собственный). Таким образом, объекты сущности не были прикреплены ни к чему.

Doh!

...