Empêcher l'insertion d'objets enfants d'Entity Framework
Entity Framework tente souvent d'enregistrer les objets enfants associés avec l'entité spécifiée, ce qui peut conduire à l'intégrité problèmes. Pour surmonter ce problème et empêcher l'insertion d'objets enfants, plusieurs approches peuvent être utilisées.
Propriétés de clé étrangère nullables
Par défaut, Entity Framework suppose que les clés étrangères ne sont pas nullables. . Pour permettre aux objets enfants d'être définis sur null, il est nécessaire de marquer explicitement les propriétés de la clé étrangère comme nullables. Ceci peut être réalisé en définissant l'attribut requis sur false dans la classe de modèle.
Exemple :
public class School { public int Id { get; set; } public string Name { get; set; } public int? CityId { get; set; } public City City { get; set; } } public class City { public int Id { get; set; } public string Name { get; set; } }
Cependant, la définition des propriétés de clé étrangère sur null peut conduire à erreurs de validation.
Gestion de l'état d'entrée d'entité
Une approche alternative consiste à définir manuellement l’état de l’objet enfant dans le contexte Entity Framework. Cela informe le contexte que l'objet enfant existe déjà et ne doit pas être enregistré.
Exemple :
public School Insert(School newItem) { using (var context = new DatabaseContext()) { context.Set<School>().Add(newItem); context.Entry(newItem.City).State = EntityState.Unchanged; context.SaveChanges(); return newItem; } }
Approche de clé étrangère
Une méthode plus robuste consiste à définir explicitement la clé étrangère dans la classe modèle. En spécifiant le nom de la colonne de clé étrangère dans les attributs, Entity Framework reconnaîtra la relation et insérera uniquement l'objet parent.
Exemple :
public class School { public int Id { get; set; } public string Name { get; set; } [ForeignKey("City_Id")] public int City_Id { get; set; } public City City { get; set; } } public class City { public int Id { get; set; } public string Name { get; set; } }
Conclusion
L'utilisation de propriétés de clé étrangère nullables, la gestion des états d'entrée d'entité ou la définition explicite de clés étrangères fournissent des moyens d'empêcher Entity Framework d'insertion d'objets enfants. L'approche appropriée dépend des exigences spécifiques et de la conception du modèle.
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!