Erreur: L'objet ne peut pas être supprimé car il n'a pas été trouvé dans ObjectStateManager.

c# entity-framework linq-to-entities

Question

J'essaie de maîtriser Entity Framework ici et je rencontre quelques ralentissements ... J'ai une méthode Get () qui fonctionne bien et qui a été testée, mais ma méthode Delete ne fonctionne pas:

   public static void Delete(string name)
    {
        J1Entities db = new J1Entities();
        db.DeleteObject(Get(name));
        db.SaveChanges();
    }

Mais j'obtiens l'erreur suivante: Erreur: L'objet ne peut pas être supprimé car il n'a pas été trouvé dans ObjectStateManager.

J'ai exécuté le débogueur et l'objet à l'intérieur de DeleteObject est correct ... que me manque-t-il? Je vous remercie.

Réponse acceptée

Chaque objet EF est étroitement associé au gestionnaire qui l'a créé (faute d'un meilleur mot). ou à laquelle il a été associé. Puisque vous ne transmettez pas la db à votre méthode Get , je suppose que Get a utilisé ses propres J1Entities ou que l'objet a été créé seul (peut-être désérialisé).

Pour le supprimer, il faut le savoir d' abord. Cela pourrait vouloir dire en attachant un objet au gestionnaire - mais dans ce cas, il semble être une option plus facile est juste de passer db dans Get , de sorte que le Get se fait dans le même contexte (car db joindra automatiquement les objets qu'il crée lui-même).



Related

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