Entity Framework EntityKey / Fremdschlüsselproblem

entity entity-framework entitykey foreign-keys

Frage

Als Ergebnis eines Formularpostens versuche ich, einen neuen Brand Record zu speichern. Aus meiner Sicht ist Gender eine Dropdown-Liste, die eine Ganzzahl zurückgibt, die mit ViewData ("Geschlecht") gefüllt wird.

Ich habe meinen Link wie folgt eingerichtet:

gID = CInt(Request.Form("Gender"))
Brand.GenderReference.EntityKey = New EntityKey("DB_ENTITIES.Gender", "Id", gID)
TryUpdateModel(Brand)
DB.SaveChanges()

Was ergibt den folgenden Fehler.

Entities in 'DB_ENTITIES.Brand' participate in the 'FK_Brand_Gender' relationship. 0 related 'Gender' were found. 1 'Gender' is expected.

Könnte mir jemand die Parameter auf Englisch erklären? Ich habe auch DB.Gender als ersten Parameter ausprobiert, aber keine Freude.

Akzeptierte Antwort

Anstatt einen EntityKey zu erstellen, erstellen Sie ein Stub-Gender-Objekt (sorry, ich bin kein VB-Typ, also in C #):

Gender g = new Gender{ID = Int32.Parse(Request.Form("Gender"))};

Dann hängen Sie das Geschlecht an das entsprechende EntitySet (der Name der Eigenschaft in der DB , von der Sie die Gender-Entitäten erhalten, ist die folgende Zeichenfolge)

DB.AttachTo("Genders",g);

Dadurch wird die Datenbank in den Zustand versetzt, in dem sich Gender im ObjectContext im unveränderten Zustand ohne Datenbankabfrage befindet. Jetzt können Sie wie gewohnt eine Beziehung aufbauen

brand.Gender = g;
DB.AddToBrand(brand);
DB.SaveChanges();

Das ist alles was dazu gehört. Sie müssen sich nicht mit EntityKeys

Hoffe das hilft

Alex


Beliebte Antwort

Was Sie brauchen, ist eine Instanz von sowohl Marke als auch Geschlecht, und setzen Sie Brand.Gender auf die Instanz von Gender. Dann kannst du ohne Probleme speichern.



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