Question Erreur Entity Framework 4: Impossible de mettre à jour EntitySet car il possède DefiningQuery


Ok, voici le scénario. J'ai 3 tables. On appelle aspnet_Users on appelé Catégories et une table de liaison appelée User_Categories. aspnet_Users et Categories ont tous deux des clés primaires (UserId et ID respectivement). La table de liaison ne comporte que deux colonnes: CategoryID et UserId, et des relations de clé étrangère sont définies pour chaque colonne ET j'ai une configuration de clé unique pour les deux colonnes de User_Categories. Cela configure une relation plusieurs-à-plusieurs entre la table aspnet_Users et la table Catégories. J'ai généré mon fichier edmx d'entités à partir de cette configuration de base de données, et tout semble parfait et fonctionne pour presque toutes les opérations.

Ce que je veux faire est d'ajouter une nouvelle catégorie à partir d'un formulaire (qui fonctionne parfaitement par lui-même), et également, en même temps, associer un utilisateur spécifique à cette catégorie nouvellement soumise. Lorsque j'essaie de faire cela, j'obtiens l'erreur dans ma ligne d'objet. Voici le code que j'utilise pour essayer ceci (ctx est mon objet de contexte d'entités):

public ActionResult Create(Category category, Guid userId)
{
    aspnet_Users user = ctx.aspnet_Users.SingleOrDefault(x => x.UserId == userId);
    ctx.Categories.AddObject(category);
    user.Categories.Add(category);
    ctx.SaveChanges();;
    return RedirectToAction("Index");
}

Pourquoi cela ne fonctionne pas?


15
2017-08-12 19:35


origine


Réponses:


Je suppose que le message d’exception est similaire à:

Impossible de mettre à jour EntitySet YourTableName car il a un DefiningQuery et aucun élément InsertFunction n'existe dans l'élément ModificationFunctionMapping pour prendre en charge l'opération en cours.

Cela se produira si la table de votre base de données n'a pas de clé primaire définie.

Ajoutez une clé primaire à votre table (à l'aide de SQL Server Management Studio ou autre) et mettez à jour votre .edmx modèle de la base de données.


39
2017-09-06 20:41



Erreur: Impossible de mettre à jour EntitySet car il possède une définition

Deux fois j'ai eu cette erreur, deux fois j'ai cherché des réponses partout, et à la fin mes mappages ont été foiré ou la base de données n'avait pas de clé primaire ou quelque chose. Je suggère de vérifier tout cela ...


2
2017-07-08 10:40



Je rencontre le même problème et j'ai corrigé par le lien suivant:

Je supprime la section de DéfinirQuery en .edmx basé sur le contenu du 3ème lien. Et puis tout fonctionne comme un charme.


2
2017-11-11 04:28



Placez une clé primaire composite sur la table de mappage, cela indiquera à EF de la gérer correctement.


2
2018-04-23 23:58