2017-10-13 3 views
0

J'ai accidentellement supprimé plusieurs tables de ma base de données et réussi à en récupérer certaines parties.Entity Framework code-first recréer des contraintes de clé étrangère

Mais il semble que mes clés étrangères n'ont pas été créées après l'ajout d'une nouvelle migration et l'exécution de la commande update-database.

Code pour manque contrainte de clé étrangère qui manque:

modelBuilder.Entity<File.File>() 
     .HasRequired(f => f.FileType) 
     .WithMany() 
     .WillCascadeOnDelete(false); 

modelBuilder.Entity<File.FileType>() 
     .HasMany(a => a.ApplicationUsers) 
     .WithMany(a => a.FileTypes); 

Est-il possible que je peux recréer les clés en utilisant le code-première? PS: J'ai essayé d'exécuter 'update-database -force' mais cela n'a pas résolu mon problème. PS2: C'est ma base de données de test, si vous vous posez la question, mais j'aime apprendre à résoudre ce problème de toute façon.

+0

avez-vous des données dans la base de données que vous souhaitez conserver? –

+0

modelBuilder.Entity () .HasRequired (f => f.FileType) .WithMany() .WillCascadeOnDelete (false); ici avec beaucoup devrait avoir une entité représentant une relation à plusieurs –

Répondre

0

Dans relation un à plusieurs Vous devez ajouter:

.HasForeignKey(f => f.Id_Representation_In_Foreign_Table) 

plusieurs à plusieurs:

  .HasMany(i => i.ApplicationUsers) 
      .WithMany(i => i.FileTypes) 
      .Map(m => // use map if you're overwriting convention, otherwise sql will create name of the columns automatically 
      { 
       m.ToTable("FileTypesAndSmth"); 
       m.MapLeftKey("ApplicationUserId"); 
       m.MapRightKey("FileTypeId"); 
      });