Передача объектов в методы - PullRequest
0 голосов
/ 26 июня 2010

Мне всегда казалось, что я понимаю, как это работает ... но в последнее время я действительно начал использовать интерфейсы, и теперь все происходит не так, как я ожидал.

Используя сущностную платформу, у меня есть сервис для каждого объекта, который отвечает за взаимодействие с базой данных и т. Д. В одном моем сервисе я передаю коллекцию объектов моему сервису в виде коллекцииcontactinfo) прежде чем я передам объект, у changetraker есть нужные состояния.однако в моем методе это не так, и все состояния установлены неизмененными.

Private Sub SaveExecute(ByVal param As Object)
            Dim srv As Services.ContactInfoService = GetService(Of Services.IContactInfoService)()

            If srv.SaveChanges(Me.ContactInfoCollection) Then
                GetEvent(Of Events.EditCompletedEvent(Of ICollection(Of Model.ContactInfo))).Publish(Me.ContactInfoCollection)
            End If


        End Sub



Public Function SaveChanges(ByVal con As ICollection(Of ContactInfo)) As Boolean Implements IContactInfoService.SaveChanges

            Using _context As New referee2Entities

                For i As Integer = 0 To con.Count - 1
                    _context.ContactInfoes.Attach(con(i))
                Next
                _context.DetectChanges()
                If _context.SaveChanges() > 0 Then
                    Return True
                    EnableNavigation()
                End If
                Return False
            End Using
            '  Return Save()

        End Function

Как я уже говорил выше, Me.contacInfoCollection имеет правильные состояния отслеживания изменений.Но как только он передается srv.savechanges, он возвращается к неизмененному.Я уверен, что это что-то глупое, что я скучаю ... все это EF может сбить меня с толку ...

Ответы [ 2 ]

0 голосов
/ 22 июля 2010

На самом деле это невозможно, учитывая то, как я использую сервисы для своих операций с данными.

это способ заставить меня работать:

Public Function Update(ByVal con As ObservableCollection(Of ContactInfo)) As Boolean Implements IContactInfoService.Update


            Using _context As New referee2Entities
                Dim entry As ObjectStateEntry
                For Each c As ContactInfo In con
                    If c.ID = 0 Then
                        _context.ContactInfoes.AddObject(c)
                    Else
                        _context.ContactInfoes.Attach(c)
                        entry = _context.ObjectStateManager.GetObjectStateEntry(c)
                        entry.ChangeState(EntityState.Modified)
                        entry.ApplyCurrentValues(c)
                    End If
                Next
                Return Save(_context)

            End Using


        End Function
0 голосов
/ 29 июня 2010

Вам нужно прикрепить до того, как вы измените.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...