Entity Framework Problème EntityKey / Clé étrangère

entity entity-framework entitykey foreign-keys

Question

À la suite d’un message, j’essaie de sauvegarder un nouvel enregistrement de marque. À mon avis, le genre est une liste déroulante, renvoyant un entier, qui est rempli à partir de ViewData ("gender")

J'ai configuré mon lien comme suit:

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

Ce qui entraîne l'erreur suivante.

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

Quelqu'un pourrait-il expliquer les paramètres en anglais clair pour moi. J'ai aussi essayé DB.Gender en tant que premier paramètre, mais pas de joie.

Réponse acceptée

Plutôt que de créer un EntityKey, créez un objet Sexe de talon (désolé, je ne suis pas un gars VB, donc en C #):

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

Ensuite, vous attachez le genre au EntitySet approprié (le nom de la propriété sur la base de DB laquelle vous obtenez les entités de genre est la chaîne ci-dessous):

DB.AttachTo("Genders",g);

Cela met la base de données dans l'état où le genre est dans le ObjectContext dans l'état inchangé sans une requête de base de données. Maintenant, vous pouvez construire une relation comme d'habitude

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

C'est tout ce qu'il y a à faire. Pas besoin de EntityKeys avec EntityKeys

J'espère que cela t'aides

Alex


Réponse populaire

Ce dont vous avez besoin est une instance de marque et de genre, puis définissez Brand.Gender sur l’instance de genre. Ensuite, vous pouvez enregistrer sans problèmes.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow