2017-06-28 5 views
0

J'utilise EntityFramework 6.0 code first framework, et j'obtiens toujours l'erreur suivante en essayant de mettre à jour la base de données.FOREIGN KEY contrainte 'FK_dbo.RateTowers_dbo.DimensionValues_DimensionValueId' dans la table 'RateTowers'

L'introduction de la contrainte FOREIGN KEY 'FK_dbo.RateTowers_dbo.DimensionValues_DimensionValueId' dans la table 'RateTowers' peut provoquer des cycles ou plusieurs chemins en cascade. Spécifiez ON DELETE NO ACTION ou ON UPDATE NO ACTION ou modifiez d'autres contraintes FOREIGN KEY.

J'ai également inclus le code suivant dans mon DB Contexte classe

OnModelCreating protected override void (DbModelBuilder Modelbuilder) { base.OnModelCreating (ModelBuilder);

modelBuilder.Entity<Dimension>().HasMany(dim => 
     dim.DimensionValues). 
     WithRequired(). 
     WillCascadeOnDelete(false); 

    modelBuilder.Entity<Dimension>().HasMany(dim => 
     dim.RateTowers). 
     WithRequired(). 
     WillCascadeOnDelete(false); 

    modelBuilder.Entity<Dimension>().HasMany(dim => 
     dim.DimensionValues). 
     WithRequired(). 
     WillCascadeOnDelete(false); 

}

Je joins une capture d'écran de mon modèle de données Data Model

Répondre

0

d'abord si je ne me trompe pas votre entrée Modelbuilder 3 est le même que le premier. Deuxièmement, à partir de votre modèle de données, le RateTowers fait référence à la table de dimensions et à la table DimensionValue. Ceci est redondant, donc DimensionValueId vous donnera aussi la dimension. Et si j'essayais de supprimer/mettre à jour la table de Dimension, cela conduirait (si cascade) à supprimer/mettre à jour les tables RateTowers et DimensionValue qui à leur tour conduiraient à supprimer/mettre à jour la table RateTowers. Vous avez déclaré une non-cascade lors de la suppression, mais la cascade de mise à jour entraîne des "chemins multiples en cascade" comme dans le message d'erreur.

+0

Merci pour votre commentaire. J'ai restructuré mon modèle et je peux, de manière inhérente, atteindre la DImension à partir de la valeur de la dimension. –