Comment mettre à jour l'enregistrement à l'aide de entity framework core?
Quelle est la meilleure approche pour mettre à jour une table de base de données au sein de l'entité cadre de travail de base ?
- Retrive la ligne de la table , faire les modifications et les enregistrer
- Utiliser le mot Clé mise à Jour en db contexte et poignée exception de l'élément n'existe pas
Que sont l'amélioration de la fonctionnalité que nous pouvons utiliser plus de EF6 ?
OriginalL'auteur Charith | 2017-10-10
Vous devez vous connecter pour publier un commentaire.
De mettre à jour une entité avec Entity Framework Core, c'est le processus logique:
DbContext
classeUpdate()
méthode dansDbContext
:Méthode de mise à jour n'a pas d'enregistrer les modifications dans la base de données; au lieu de cela, il définit les états pour les entrées en instance DbContext.
Donc, Nous pouvons invoquer
Update()
méthode avant d'enregistrer les modifications dans la base de données.Je vais assumer certaines définitions d'objet pour répondre à votre question:
Nom de base de données est de Stocker
Nom de la Table est Produit
Produit définition de la classe:
DbContext définition de la classe:
Logique de mise à jour de l'entité:
S'il vous plaît laissez-moi savoir si cela est utile
OriginalL'auteur H. Herzl
Selon Microsoft docs:
Cependant, vous devez savoir que l'utilisation de méthode de mise à Jour sur DbContext va marquer tous les champs modifié et tous les inclure dans la requête. Si vous voulez mettre à jour un sous-ensemble de domaines, vous devez utiliser la méthode Attach puis marquer le champ souhaité que modifié manuellement.
context.Entry(person).Property(p => p.Name).IsModified = true;
Aussi pouvez simplement faire
context.Entry(person).State = EntityState.Modified;
Qu'est-ce contexte.Entrée(à la personne).Etat = EntityState.Modifié; dire? Si je modifie des champs multiples, dois-je apporter des modifications à cette ligne?
Bon point ehsan jan! ;D ailleurs, si l'entité est mise à jour par l'utilisateur et vous ne savez pas/soins de champs qui sont modifiés, vous pouvez utiliser
_context.Attach(person).State = EntityState.Modified;
pour indiquer que cette entité doit être mis à jour à la méthode SaveChanges.OriginalL'auteur Ehsan Mirsaeedi
Microsoft Docs nous donne deux approches.
C'est la même vieille manière dont nous l'habitude de faire dans les versions précédentes de l'Entity Framework. et c'est ce que Microsoft recommande pour nous.
Avantages
Modified
drapeau sur les champs qui sont modifiés par le formulaire de saisie.une alternative est d'attacher une entité créée par le modèle de liaison de l'EF contexte et le marquer comme modifié.
Comme mentionné dans la réponse à la lecture de la première approche nécessite une lecture de base de données, et peut conduire à un code plus complexe pour la manipulation des conflits de concurrence.
OriginalL'auteur Nipuna