web-dev-qa-db-fra.com

Entity Framework Attach / Update confusion (EF Core)

J'ai juste une petite confusion sur les méthodes EF "Attacher" et "Mettre à jour".

Si je comprends bien, lorsque "Update" est appelé, chaque propriété au sein d'une entité spécifique est modifiée.

La méthode "Attach", d'autre part, démarre l'entité dans l'état "Non modifié". Ensuite, lorsqu'une opération a lieu sur une propriété particulière, seule cette propriété spécifique est modifiée. Ainsi, "Attacher" est plus utile pour les modifications de propriétés individuelles, et "Mettre à jour" est plus utile lorsque vous souhaitez mettre à jour chaque propriété de l'entité (je peux me tromper dans cette compréhension).

Cependant, ce que je ne comprends pas, c'est ce qui se passe lorsqu'aucune de ces deux méthodes n'est appelée lors d'un changement de propriété. Par exemple, considérons un exemple avec une table appelée "étudiants":

student.City = "Calgary";
student.Name = "John Smith";
database.SaveChanges();

Comme nous ne marquons aucune propriété de l'entité comme modifiée, en quoi la requête générée à partir du code ci-dessus différera-t-elle?

7
J Marlow

Considérez le code suivant:

students entity = new students() {
    Id = 1,
    City = "New York",
    Name = "Sam"
};
using(SomeContext ctx = new SomeContext())
{
    ctx.Entry(entity).State = EntityState.Modified;
    ctx.SaveChanges();
}

En supposant que nous avons un enregistrement avec id = 1 dans la base de données, le code ci-dessus mettra à jour cette entité dans la base de données.

Attach est utilisé lorsque vous savez qu'une entité existe déjà dans la base de données mais que vous souhaitez apporter des modifications tout en changeant d'état en modifié lorsque vous avez déjà effectué les modifications.

8
Ajay Gupta