Frage

Ich verwende Entity Framework und Teil meines Codes möchte 100 Entitäten in die Datenbank bringen. Einige der Einheiten, die ich einfügte, haben viele zu vielen Beziehungen und ich möchte sicherstellen, dass ich nur neue Gegenstände einfüge. Es ist einfach, die vorhandenen im DB zu überprüfen. Wenn ich sie jedoch bereits in meine aktuelle Sitzung eingefügt habe, um die 100 Elemente bestehen zu können, werde ich wiederholte Elemente erhalten.

Die Sache ist der Hauptschlüssel, der nur automatisch erzeugt wird und die Einzigartigkeit der Tabelle aus einer einzigartigen Spalte stammt, die in EF nicht unterstützt wird. Wie überprüfe ich, ob ich den Artikelteil meiner Sitzung in EF 4.1 noch nicht eingefügt habe? Ich habe die Find -Methode auf dem DBContext gesehen, aber das erfordert einen Primay -Schlüssel, den ich nicht verwenden kann. Angesichts der Tatsache, dass ich 4.1 benutze, stecke ich auch mit dbContext fest. Wie kann ich eine generische Möglichkeit haben, dies zu überprüfen?

War es hilfreich?

Lösung

Wenn Sie EF verwenden möchten, sollten Sie sich bei PK als eindeutige Identifizierung Ihrer Entitäten halten. Andernfalls wird Ihre Entwicklungserfahrung ziemlich schlecht sein.

Wenn Sie überprüfen möchten, ob Sie das gleiche Element im aktuellen Kontext bereits verarbeitet haben:

bool exists = context.YourDbSet.Local.Any(x => x.UniqueId == someId)

Wenn Sie den Zustand der Entitätsanwendung überprüfen müssen:

EntityState state = context.Entry(entity).State;

Wenn Sie überprüfen müssen, ob die Entität in der Datenbank verwendet wird:

YourEntity entity = context.YourDbSet.SingleOrDefault(x => x.UniqueId == someId);

Die letzte Aussage ist im gleichzeitigen System eigentlich nicht bester Weg SaveChanges Ein anderer Prozess könnte bereits die Entität einfügen. Es gibt keine einfache Möglichkeit, damit umzugehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top