Zuordnen von EF-Entities zu ViewModels, die ICollection und Lazy Loading verwalten

8

Dies ist etwas, das mich seit der Umstellung auf EF 6 abgehört hat. Wie ordnen wir jetzt Auflistungen zu, um Modelle anzuzeigen, so dass Änderungen von Zuordnungen mit IEnumerables nicht schmerzhaft sind. Hier ist ein Codeausschnitt, der mein Problem zeigt:

Entität - SS.Entity.Event

%Vor%

Modell - SS.Modell.Event

%Vor%

Zurück zur Entität nach Änderung der Sammlung

%Vor%

Das Problem dabei ist, dass ich eine ICollection nicht einer anderen ICollection zuordnen kann, da Select ein IEnumerable erzeugt, was das erneute Mappen von Eigenschaften auf EF erschwert, da ich die Sammlung neu erstellen oder sie aufzählen muss, um sie zu aktualisieren. Ich weiß, dass mir etwas offensichtlich fehlt, ich habe die ICollection aktualisiert, um virtuell zu sein, wie in anderen Antworten beschrieben, aber es ist mir unklar, wie das hilft.

Jede Hilfe würde sehr geschätzt werden!

Gerard

    
Gerard Wilkinson 15.08.2016, 23:55
quelle

2 Antworten

2

Angenommen, Ihr ".ToList ()" - Problem tritt beim Zurückspeichern in die Datenbank auf: Suchen Sie danach?:

%Vor%     
Developer 23.08.2016 13:35
quelle
1

In Ihrem ViewModel können sie einfach IEnumerable<T> sein, es sei denn, Sie müssen später .Add() ausführen. Das kann sein, was auch immer du sein willst. Außerdem müssen sie nicht virtuell auf dem Modell sein, da EF nicht einen abgeleiteten Typ Ihres Modells erstellt (auch wenn Sie aus einem anderen Grund nicht dazu berechtigt sind).

Um sie zurückzusetzen auf das, was sie im DTO-Objekt sind, wenn Sie es nur direkt setzen und nicht einzelne Eigenschaften überprüfen möchten, können Sie .ToList() verwenden, damit es die Anforderung ICollection<T> erfüllt.

%Vor%     
krillgar 18.08.2016 16:37
quelle