Frage

Wie muss ich eine Immobilie einrichten, damit die vielen zu einer Beziehung bei der Verwendung von Savechanges gespeichert wird und ich nicht die: Einfügen von Erklärung in Einführung mit dem Fremdschlüsselbeschränkung ... Fehler.

Ziemlich einfach, ich habe eine Anzeige und einen ADTYPE, bei dem es viele Anzeigen zu einem ADTYPE gibt. Es gibt eine Eigenschaft auf AD:

public class Ad
{
   public Int32 AdTypeId { get; set; }
   public virtual AdType AdType { get; set; }
}

Diese Beziehung abdecken.

Wenn ich das mache:

someAd.AdType = someAdType;

Die Eigenschaft ist in Ordnung eingestellt, aber das ADTYPEID ist nicht. Keine Sorge, da ich davon ausgehen würde, dass dies in Ordnung wäre, um zu sparen.

context.SaveChanges();

Das Problem ist an diesem Punkt, dass es versucht, den 0 -Wert in der ADTYPEID -Spalte (ein Fremdschlüsselproblem zu verursachen) zu speichern, anstatt das Objekt zugewiesene ADTYPE -Eigenschaft zu verwenden, um herauszufinden, was es in die ADTYPEID -Spalte einfügen soll.

Dinge, die ich weiß:

  • Zu diesem Zeitpunkt ist Someadtype beharrt/hat eine ID.
  • Die ADTYPE -Eigenschaft ist korrekt eingestellt.
  • Der Adypeid ist 0.
  • Es gibt eine fremde Schlüsselbeziehung in der Datenbank.
  • Adypeid ist ein Hauptschlüssel.
  • Ich habe auf True aufgeschoben/faul aufgeschoben

Ich habe nicht wirklich versucht, den ADTYPE zu wechseln, seit es eingerichtet ist, um ein fauler Laden zu ermöglichen.

War es hilfreich?

Lösung

OK sieht aus wie, weil ich den nicht proxiierten (MAD DIESEM Word aufgebraucht hat ... yah) "Snapshot -basierte Änderungsverfolgung" -Ansatz, das System hat keine wirkliche Idee, dass es sich geändert hat.

In diesem Beispiel ist der Kunde ein reiner Poco -Typ. Anders als bei EntityObject oder IPOCO -basierten Entitäten hält Änderungen an der Entität nicht automatisch synchronisiert, da zwischen Ihren reinen Poco -Entitäten und dem Entity -Framework keine automatische Benachrichtigung vorhanden ist. Bei der Abfrage des Staatsmanagers ist es daher der Ansicht, dass der Kundenobjektstatus unverändert ist, obwohl wir explizit eine der Eigenschaften des Unternehmens ändern.

Habe das von hier aus

Um sicherzustellen, dass es zu überprüfen ist, ob es eine Änderung vorliegt, muss ich das verwenden AccomeAllchangesaftersave Option mit der Savechanges -Methode.

context.SaveChanges(System.Data.Objects.SaveOptions.AcceptAllChangesAfterSave);

Und es funktioniert. Hoffentlich verstehe ich es richtig ...

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