Entity Framework 5 - Suppression D'Enregistrements Enfant
VS 2012 (11.0.60315.01 mise à Jour 2), C# 5, Entity Framework 5.0.0.0 (Runtime v4.0.30319)
Je sais que des questions similaires ont été publiés dans le passé, mais il ne semble pas y avoir de réponse. Je crois que je comprends l'erreur, mais je suis plus intéressé à trouver le 'désiré' solution. Tout ce que je veux faire est de supprimer un enregistrement de la table Enfant. Quelqu'un peut-il aider?
C'est un plein et simple exemple. Le SaveChanges() jette l'exception suivante:
"L'opération a échoué: La relation ne peut pas être changé parce que l'un ou plusieurs de la clé étrangère propriétés est pas les valeurs null. Lorsqu'une modification est apportée à une relation, la clé étrangère de la propriété est définie sur une valeur null. Si la clé étrangère ne prend pas en charge les valeurs null, une nouvelle relation doit être définie, la clé étrangère de la propriété doit être attribuée à une autre valeur non nulle, ou sans rapport avec l'objet doit être supprimé."
Le code ressemble à ceci:
using System.Linq;
namespace EFDeleteTest
{
class Program
{
static void Main(string[] args)
{
using (EFTestEntities context = new EFTestEntities())
{
var parent = context.Parents.Single(p => p.Id == 1);
var child = parent.Children.Single(c => c.Id == 1);
parent.Children.Remove(child);
context.SaveChanges(); //Throws the above Exception
}
}
}
}
La Base de données ressemble à ceci:
Parent
Id (PK, int, not null) IDENTITY
Name (nvarchar(50), null)
Child
Id (PK, int, not null) IDENTITY
ParentId (FK, int, not null) -- Foreign Key to the Parent Table (Id column))
Name (nvarchar(50), null)
Il y a un enregistrement dans la table Parent (Id = 1) et il y a 2 enregistrements dans la table Enfant (Id 1 et 2). Les deux enregistrements de l'Enfant ont un ParentId = 1.
C#
, VS2012
balises etc. Vous obtiendrez plus de points de vue et les réponses de cette façon.OriginalL'auteur Rob L | 2013-06-12
Vous devez vous connecter pour publier un commentaire.
Si tout ce que vous voulez, c'est de supprimer l'objet enfant, le parent de l'objet ne doit pas être concerné dans la logique. Essayez le code ci-dessous, laissez-moi savoir ce qui se passe (Pas testé).
OriginalL'auteur Komengem