Verwenden Sie automapper, um eine Entity Framework-Entität zu aktualisieren

9

Ich versuche Entity Framework zu verwenden und habe Automapper meine Entität von meinem Vertrag aktualisieren lassen.

Mein Code sieht so aus:

%Vor%

(Hinweis: Ich verwende das Repository-Muster. dataAccess.FindOne ruft CreateQuery auf, um eine Entität zurückzugeben.)

Das Problem, das ich habe, ist mit den Beziehungen. Ich bekomme diesen Fehler, wenn ich ein Update mache (Inserts funktionieren gut):

  

Die Operation ist fehlgeschlagen: Die Beziehung konnte nicht geändert werden, da eine oder mehrere Eigenschaften des Fremdschlüssels nicht nullfähig sind. Wenn eine Änderung an einer Beziehung vorgenommen wird, wird die zugehörige Fremdschlüsseleigenschaft auf einen Nullwert festgelegt. Wenn der Fremdschlüssel keine Nullwerte unterstützt, muss eine neue Beziehung definiert werden, der Fremdschlüsseleigenschaft muss ein anderer Wert ungleich Null zugewiesen werden, oder das nicht verwandte Objekt muss gelöscht werden.

Ich vermute, dass der Autoadapter nicht so aktualisiert wird, wie ich es möchte. Aus der Fehlermeldung und dem googlen herum habe ich vermutet, dass meine Beziehungen, die Sammlungen sind (und vielleicht sogar diejenigen, die keine Sammlungen sind), von Automapper neu erstellt werden.

Wie kann ich Automapper mitteilen, dass nur Objekte oder Sammlungen aktualisiert und nicht neu erstellt werden sollen?

Vermutungen:

Ich habe gelesen, dass ich vielleicht die Option UseDestinationValue für den Auto-Mapper verwenden muss. Ich ging zurück und legte das auf alle meine Sammlungen. Aber wenn ich das mache, dann scheitern meine Einsätze mit einer Fremdschlüsselverletzung.

Codezuordnungen:

Verwenden von UseDestinationValue nur für eine Sammlung (diese wird eingefügt, aber nicht aktualisiert):

%Vor%

Verwenden Sie UseDestinationValue überall (dieser wird nicht eingefügt):

%Vor%

Was brauche ich, damit ich einfügen und updaten kann?

    
Vaccano 18.10.2011, 16:02
quelle

1 Antwort

0

Ich denke, was Sie wollen, ist, dass AutoMapper Ihre EF-Entity nicht erstellt und die, die Sie gesendet haben, übernimmt. In Version 2.0 von Auto Mapper gibt es eine Überladung zu map-Methode, wo Sie im Grunde Ihre Datenkontext-Delegate übergeben können und lassen Sie EF Ihr Objekt erstellen.

Bitte schauen Sie sich diesen Artikel an.

    
np-hard 15.11.2011 20:02
quelle