实体框架代码首先重新创建外键约束

时间:2017-10-13 20:14:11

标签: c# sql-server entity-framework ef-code-first

我不小心删除了我的数据库的几个表,并设法恢复它的某些部分。

但似乎在添加新迁移并运行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:这是我的测试数据库,如果你想知道,但我还是想学习如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

进入一对多关系你需要添加:

    .HasForeignKey(f => f.Id_Representation_In_Foreign_Table)

多对多的关系:

            .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");
            });