2017-10-13 24 views
0

私のデータベースのいくつかのテーブルを誤って削除し、その一部をリカバリすることができました。Entity Frameworkコードファーストで外部キー制約を再作成

しかし、新しい移行を追加してupdate-databaseコマンドを実行した後、私の外部キーが作成されていないようです。不足している外部キー制約不足しているため

コード:

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

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

は、私は、コードを使用して最初のキーを再作成することができます方法はありますか?

PS: 'update-database -force'を実行しようとしましたが、問題を解決できませんでした。

PS2:これは私のテストデータベースです。あなたが疑問に思っていたら、とにかくこれを修正する方法を学ぶのが好きです。

.HasForeignKey(f => f.Id_Representation_In_Foreign_Table) 

多く、多くの関係に:あなたが追加する必要があり、多くの関係に一つに

+0

あなたが維持したい、データベース内の任意のデータを持っていましたか? –

+0

modelBuilder.Entity () .HasRequired(f => f.FileType) .WithMany() .WillCascadeOnDelete(false);ここでは、1対多の関係を表すエンティティを持つ必要があります –

答えて

0

  .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"); 
      }); 
関連する問題