Auto-référencement / relation parent-enfant dans le cadre de L'entité

j'ai lu pas mal de messages de programmeurs qui passent dans le impossible de déterminer une commande valide pour les opérations dépendantes. Des dépendances peuvent exister en raison de contraintes de clé étrangère, d'exigences de modèle ou de valeurs générées par le magasin -exception lors de l'utilisation d'une relation d'auto-référencement dans le Cadre de l'Entité.

je suis en train d'essayer d'obtenir une relation parent-enfant:

public class Category {
    public int CategoryId { get; set; }
    public string Name { get; set; }
    public int ParentId { get; set; }
    public Category Parent { get; set; }
    public List<Category> Children { get; set; }
}

C'est la configuration que j'utilise (Courant API):

Property(c => c.ParentId).IsOptional();
HasMany(c => c.Children).WithOptional(c => c.Parent).HasForeignKey(c => c.ParentId);
//HasOptional(c => c.Parent).WithMany(c => c.Children).HasForeignKey(c => c.ParentId);

les deux configurations HasMany() et HasOptional() se traduisent par un "impossible de déterminer un ordre valide pour les opérations dépendantes..."l'exception" quand j'essaie d'enregistrer une nouvelle catégorie comme ceci:

context.Categories.Add(new Category { Name = "test" });

Je ne comprends pas pourquoi EF n'insère pas la catégorie avec un parentide nul. La base de données permet à la clé étrangère ParentId d'être nulle.

seriez-vous capable de me dire comment faire cela?

25
demandé sur Slauma 2012-03-31 15:29:43
la source

1 ответов

vous devez définir le ParentId dans la catégorie comme nullable de l'utiliser comme propriété de clé étrangère pour un facultatif lien:

public int? ParentId { get; set; }

int propriété ne peut pas prendre la valeur null et ne peut donc pas représenter un NULL comme valeur dans une colonne de base de données.

30
répondu Slauma 2012-03-31 16:37:17
la source