Maison >développement back-end >C++ >Comment résoudre « L'instruction de mise à jour, d'insertion ou de suppression du magasin a affecté un nombre inattendu de lignes » dans Entity Framework 6 ?

Comment résoudre « L'instruction de mise à jour, d'insertion ou de suppression du magasin a affecté un nombre inattendu de lignes » dans Entity Framework 6 ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-07 08:22:40785parcourir

How to Resolve

Résolution des exceptions de concurrence dans les mises à jour d'enregistrements d'Entity Framework 6

Lorsque vous tentez de mettre à jour un enregistrement à l'aide d'Entity Framework 6, vous pouvez rencontrer l'erreur « Store update, insert, or L'instruction delete a affecté un nombre inattendu de lignes." Cette erreur se produit car l'enregistrement a peut-être été modifié ou supprimé depuis son chargement initial dans le contexte.

Pour résoudre ce problème, vous pouvez utiliser l'approche suivante :

  1. Récupérer le enregistrement de la base de données à l'aide de la méthode SingleOrDefault.
  2. Vérifiez si l'enregistrement existe à l'aide de la condition if.
  3. Modifiez directement l'enregistrement récupéré Enregistrez les propriétés de l'enregistrement selon vos besoins.
  4. Enregistrez les modifications apportées à la base de données à l'aide de la méthode SaveChanges.

Voici un exemple de code mis à jour qui illustre cette approche :

using (var db = new MyContextDB())
{
    var result = db.Books.SingleOrDefault(b => b.BookNumber == bookNumber);
    if (result != null)
    {
        result.SomeValue = "Some new value";
        db.SaveChanges();
    }
}

Ce code mis à jour récupère l'enregistrement, affecte la nouvelle valeur à la propriété appropriée, puis enregistre les modifications. En modifiant directement l'enregistrement récupéré, vous évitez d'avoir à le joindre explicitement ou à définir l'état de l'entité, résolvant ainsi l'exception de concurrence.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn