Wie erstellt man Fremdschlüsselbeziehungen mit dem Entity Framework?

asp.net-mvc entity-framework foreign-key-relationship

Frage

Ich möchte eine neue Zeile in meiner Datenbank in einer Tabelle erstellen, die einige Fremdschlüsselbeziehungen hat, und ich konnte nicht feststellen, welche Reihenfolge und welche Aufrufe getätigt werden müssen. Das habe ich bisher:

db.Models.Order order = DB.Models.Order.CreateOrder( apple );
order.CustomerReference.Attach( ( from c in db.Customer where c.Id == custId select c ).First() );
db.SaveChanges();

Der Code schlägt in der zweiten Zeile fehl und sagt:

Anhängen ist keine gültige Operation, wenn sich das mit diesem verwandten Ende verknüpfte Quellobjekt in einem hinzugefügten, gelöschten oder getrennten Zustand befindet. Objekte, die mit der NoTracking-Zusammenführungsoption geladen werden, werden immer getrennt.

Irgendwelche Ideen?

Akzeptierte Antwort

(Danke John für die Grammatikkorrekturen)

Also habe ich es herausgefunden. Das müssen Sie tun:

db.Models.Order order = DB.Models.Order.CreateOrder( apple );
order.Customer = (from c in db.Customer where c.Id == custId select c).First();
db.SaveChanges();

Ich hoffe das hilft den Leuten.


Beliebte Antwort

Warum nicht Entitätsreferenzen verwenden? Ihre Methode verursacht eine zusätzliche SELECT Anweisung.

Eine viel schönere Methode ist die Verwendung der CustomerReference Klasse und eines EntityKey .

order.CustomerReference = new System.Data.Objects.DataClasses.EntityReference<Customers>();
order.CustomerReference.EntityKey = new EntityKey("ModelsEntities.Customers", "Id", custId);


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum