Lorsque j'enregistre une entité avec un cadre d'entité, j'ai naturellement supposé qu'il essaierait uniquement de sauvegarder l'entité spécifiée. Cependant, il essaie également de sauvegarder les entités enfants de cette entité. Cela pose toutes sortes de problèmes d'intégrité. Comment forcer EF à enregistrer uniquement l'entité que je souhaite enregistrer et donc à ignorer tous les objets enfants?
Si je définis manuellement les propriétés sur null, j'obtiens une erreur "L'opération a échoué: la relation n'a pas pu être modifiée car une ou plusieurs propriétés de clé étrangère ne peuvent pas être nulles." Ceci est extrêmement contre-productif car j'ai défini l'objet enfant sur null spécifiquement afin qu'EF le laisse seul.
Pourquoi est-ce que je ne veux pas enregistrer / insérer les objets enfants?
Étant donné que cela est discuté dans les deux sens dans les commentaires, je vais vous expliquer pourquoi je veux que mes objets enfants soient laissés seuls.
Dans l'application que je construis, le modèle d'objet EF n'est pas chargé à partir de la base de données, mais utilisé comme objets de données que je remplis lors de l'analyse d'un fichier plat. Dans le cas des objets enfants, beaucoup d'entre eux font référence à des tables de recherche définissant diverses propriétés de la table parent. Par exemple, l'emplacement géographique de l'entité principale.
Depuis que j'ai rempli ces objets moi-même, EF suppose qu'il s'agit de nouveaux objets et qu'ils doivent être insérés avec l'objet parent. Cependant, ces définitions existent déjà et je ne souhaite pas créer de doublons dans la base de données. J'utilise uniquement l'objet EF pour effectuer une recherche et remplir la clé étrangère dans mon entité de table principale.
Même avec les objets enfants qui sont des données réelles, je dois d'abord enregistrer le parent et obtenir une clé primaire ou EF semble juste faire un gâchis. J'espère que cela donne une explication.