J'ai une relation parent-enfant très similaire à Northwind Customer/Orders mais avec une différence, la CustomerID dans la table Orders ne peut pas accepter NULL, c'est un FK, le enfant a une colonne PKey appelé OrderIDLINQ to SQL: Supprimer une nouvelle entité enfant ajoutée avant submitchanges - échoue
J'utilise ce modèle dans une fenêtre forme databinding, zone supérieure est d'avoir les informations des clients dans les zones de texte, zone inférieure est d'avoir une grille avec des commandes figurant
Je récupère un client en utilisant LINQ à partir de DB pour permettre à l'utilisateur de modifier les informations client ou les détails de la commande, lorsque je supprime une ligne de la grille de commande puis soumettre les modifications, je reçois erreur "Une tentative a été faite pour supprimer un relation entre un client et des commandes, cependant, une clé étrangère de la relation (CustomerID) ne peut pas être définie sur Null "
après une longue recherche sur Internet, j'ai utilisé l'attribut DeleteOnNull = True et cela fonctionne maintenant
ce qui ne fonctionne pas, cependant, et donnent toujours la même erreur exacte est quand j'ajouter un nouvel ordre sur la grille puis le supprimer avant SubmitChanges
Je comprends que lorsque je supprime une nouvelle ligne de commande dans la grille i supprimer uniquement les association au client, donc il définit CustomerID = NULL pour cette entité, bien, maintenant comment le retirer complètement de l'ensemble d'entités avant de soumettre les modifications pour éviter l'erreur, je ne peux pas utiliser DeleteOnSubmit parce que c'est une nouvelle entité qui ne vient pas de db, je recevrai une exception si j'essayais, donc supprimer la ligne à la main en utilisant la grille ne marche pas, ce qui appelle la méthode "Remove" et je ne peux pas utiliser DeleteOnSubmit, Que puis-je faire ?
pourquoi il doit être si difficile? à ADO.NET datatable est beaucoup plus facile, si je supprime une ligne et il arrive à venir de DB puis il marque pour la suppression, si c'est une nouvelle ligne, puis il supprime de la collection, Fait! Je ne veux pas revenir à datasets après avoir investi beaucoup d'efforts d'apprentissage LINQ to SQL maintenant
toute aide est très appréciée
Merci Bassam
Pouvez-vous me dire si vous utilisez une application WinForm ou une application Web? Vous avez de la difficulté à comprendre ce que vous faites lorsque vous ajoutez ou supprimez une ligne dans la grille de données Orders. – alextansc
Bien que je crois que l'auteur mentionne qu'il utilise WinForms, j'ai la même situation dans ASP.NET MVC. J'ai un scénario où le classeur de modèle par défaut MVC crée une entité enfant que je (basé sur certaines conditions) souhaite ne pas avoir persisté à la base de données. Je ne souhaite pas qu'il existe en fait, mais c'est dans mon graphique d'objets. Si j'utilise ".Remove()" - par exemple Customer.Orders.RemoveAt (0) pour utiliser le schéma de l'auteur - alors il semble OK jusqu'à ce que je SubmitChanges, à quel point j'obtiens une erreur sur une clé étrangère qui ne peut pas être mettre à null .... – Funka