Maison >développement back-end >C++ >Comment empêcher Entity Framework de sauvegarder des entités enfants lors de la sauvegarde d'une entité parent ?
Comment empêcher Entity Framework d'enregistrer des objets enfants
Lors de l'utilisation d'Entity Framework, l'enregistrement d'une entité peut tenter par inadvertance d'enregistrer les entités enfants associées. Pour remédier à cela et conserver uniquement l'entité spécifiée, envisagez les approches suivantes :
Utilisation d'EntityState
Vous pouvez définir l'EntityState de l'objet enfant sur Unchanged, en informant Entity Framework pour le laisser intact :
using (var context = new DatabaseContext()) { context.Set<School>().Add(newItem); context.Entry(newItem.City).State = EntityState.Unchanged; context.SaveChanges(); }
Utiliser des Clés
Une approche plus flexible consiste à exploiter les clés étrangères. Lors de la définition d'entités, spécifiez la propriété de clé étrangère sur l'entité enfant et la propriété de clé primaire correspondante sur l'entité parent :
public class City { public int Id { get; set; } public string Name { get; set; } } public class School { public int Id { get; set; } public string Name { get; set; } [ForeignKey("City_Id")] public City City { get; set; } [Required] public int City_Id { get; set; } }
Lors de l'insertion de l'entité, définissez explicitement la propriété de clé étrangère de l'objet enfant et définissez la propriété de clé étrangère de l'objet parent. propriété de navigation sur null :
public School Insert(School newItem, int cityId) { if (cityId <= 0) { throw new Exception("City ID not provided"); } newItem.City = null; newItem.City_Id = cityId; using (var context = new DatabaseContext()) { context.Set<School>().Add(newItem); context.SaveChanges(); } }
En suivant ces techniques, vous pouvez contrôler la persistance des objets enfants, en garantissant que seules les entités souhaitées sont enregistrées et en empêchant leur intégrité potentielle. problèmes.
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!