Question

Je ces entités (ce qui est juste une abstraction j'ai créé pour ce post):

  • Langue
  • District
  • Description

Ce sont les références entre elles:

  • District * - 1 Langue
  • Description * - 1 Langue
  • District 1 - 1 Description

Si j'aille chercher comme ceci:

var myFetch = from c in context.Districts
              where c.Id = 10
              select new { DistrictId = c.Id, Lang = c.Language };

et après cela, je tente de l'assigner à Description comme ceci:

Description desc = Description.CreateDescription(0, "My description");
desc.DistrictReference.EntityKey = new EntityKey("MyEntities.Descriptions", "DistrictId", myFetch.DistrictId);
desc.Language = myFetch.Lang; //throws error

L'erreur renvoyée est:

  

System.InvalidOperationException: La   relation ne peut pas être définie car   le nom EntitySet   « MyEntities.Descriptions » est   pas valable pour le rôle « district »   Nom ensemble d'associations   'MyEntities.District_Description'.

Qu'est-ce que je fais mal?

Était-ce utile?

La solution

si myFetch devait être une instance de la classe District, vous pouvez le faire par programme:

desc.DistrictReference.EntityKey = new EntityKey(  
  String.Format(  
    "{0}.{1}",   
    myFetch.EntityKey.EntityContainerName,   
    myFetch.EntityKey.EntitySetName),   
  "DistrictId", 
  myFetch.DistrictId);  

Autres conseils

Tout ce que le message dit: Vous avez spécifié la mauvaise entité nom de l'ensemble

.
  1. Ouvrez votre EDMX.
  2. Ouvrez la fenêtre du navigateur de modèle.
  3. Trouvez l'entité de district dans le navigateur du modèle
  4. clic droit, choisissez "Propriétés"
  5. Notez le nom du jeu correct Entité
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top