Hinzufügen einer Beziehung mit einer Entität, die in den Gelöschten Zustand ist nicht erlaubt

Ich versuche mich zu entfernen, ein Verweis auf eine Entität in einer Eins-Zu-Viele-Beziehung in der folgenden Weise, aber erhalte eine Fehlermeldung, wenn ich versuche, an das Objekt 'o' zu meinem DbContext. Der Fehler ist:

"Hinzufügen einer Beziehung mit einer Entität, die in den Gelöschten Zustand ist nicht zulässig."

Ich habe auch versucht, die folgenden an Stelle der Einstellung der EntityState:

 _db.OrganizationMetrics.Remove(om)

Was ist der richtige Weg, um diese zu entfernen?

<HttpPost()>
Function Edit(ByVal ovm As OrganizationViewModel)

    Dim o As Organization


    o = AutoMapper.Mapper.Map(Of OrganizationViewModel, Organization)(ovm)

    For Each om In o.OrganizationMetrics
        _db.OrganizationMetrics.Attach(om)

        If om.Value = "removeMe" Then
            _db.Entry(om).State = EntityState.Deleted
        ElseIf om.Id = 0 Then
            _db.Entry(om).State = EntityState.Added
        Else
            _db.Entry(om).State = EntityState.Modified
        End If
    Next

    _db.Organizations.Attach(o) 'Error is thrown here

    If (ModelState.IsValid) Then

        _db.Entry(o).State = EntityState.Modified
        _db.SaveChanges()

        Return RedirectToAction("Index")
    Else

        Return View(ovm)
    End If

End Function

UPDATE:

Dies ist nun mein funktionierender code. Der Schlüssel ist, um nicht Karte die Kinder Entitäten zurück zum übergeordneten entity-Modell aus dem view-Modell, so dass ich kann sich mit Ihnen individuell.

    <HttpPost()>
    Function Edit(ByVal ovm As OrganizationViewModel)

        Dim o As Organization

        o = AutoMapper.Mapper.Map(Of OrganizationViewModel, Organization)(ovm) //The Automapper code ignores the OrganizationMetrics members
        _db.Organizations.Attach(o)

        For Each om In ovm.OrganizationMetrics
            _db.OrganizationMetrics.Attach(om)

            If om.Value = "removeMe" Then
                _db.Entry(om).State = EntityState.Deleted
            ElseIf om.Id = 0 Then
                _db.Entry(om).State = EntityState.Added
            Else
                _db.Entry(om).State = EntityState.Modified
            End If
        Next


        If (ModelState.IsValid) Then

            _db.Entry(o).State = EntityState.Modified
            _db.SaveChanges()

            Return RedirectToAction("Index")
        Else

            Return View(ovm)
        End If

    End Function

InformationsquelleAutor Ben Finkel | 2011-05-25

Schreibe einen Kommentar