使用实体框架核心时数据库迁移失败

时间:2017-08-07 16:36:16

标签: database entity-framework-core

我正在使用Visual Studio 2017社区中的Entity Framework核心和程序包管理器控制台通过add-migrationupdate-database命令进行迁移,以将更改从我的模型应用到数据库。 我正在尝试使用update-database命令进行迁移,并且它始终因错误而失败: “ALTER TABLE DROP COLUMN失败,因为'UserIDUser'是表'UserGroups'中唯一的数据列。一个表必须至少有一个数据列。” 我不知道该如何处理,现在我无法应用我在应用程序中的模型代码中所做的任何更改。我已经用几次相同的方式对数据库进行了一些更新,直到现在一切都很好。我在模型中所做的是从UserGroup实体(IDUserGroup具体)删除一个字段,但我不知道是我的麻烦的原因。

我该如何修复?

这是我之前迁移的代码(迁移设计器文件)已成功更新到数据库,另一个我无法更新到数据库:

上一个update-database(成功):

[DbContext(typeof(DBContext))]
[Migration("20170726113245_Privatemigration")]
partial class Privatemigration
{
    protected override void BuildTargetModel(ModelBuilder modelBuilder)
    {
        modelBuilder
            .HasAnnotation("ProductVersion", "1.1.2")
            .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);

       modelBuilder.Entity("Server.Models.Group", b =>
            {
                b.Property<int>("IDGroup")
                    .ValueGeneratedOnAdd();

                b.Property<string>("Description");

                b.Property<string>("GroupName")
                    .IsRequired();

                b.HasKey("IDGroup");

                b.ToTable("Groups");
            });

        modelBuilder.Entity("Server.Models.User", b =>
            {
                b.Property<int>("IDUser")
                    .ValueGeneratedOnAdd();

                b.Property<string>("Forename")
                    .IsRequired();

                b.HasKey("IDUser");

                b.ToTable("Users");
            });

        modelBuilder.Entity("Server.Models.UserGroup", b =>
            {
                b.Property<int>("IDUserGroup")
                    .ValueGeneratedOnAdd();

                b.Property<int?>("GroupIDGroup");

                b.Property<int?>("UserIDUser");

                b.HasKey("IDUserGroup");

                b.HasIndex("GroupIDGroup");

                b.HasIndex("UserIDUser");

                b.ToTable("UserGroups");
            });

        modelBuilder.Entity("Server.Models.UserGroup", b =>
            {
                b.HasOne("Server.Models.Group", "Group")
                    .WithMany("Groups")
                    .HasForeignKey("GroupIDGroup");

                b.HasOne("Server.Models.User", "User")
                    .WithMany("UserGroups")
                    .HasForeignKey("UserIDUser");
            });
    }
}

后续update-database(失败):

[DbContext(typeof(DBContext))]
[Migration("20170807142122_PrivateMigration2")]
partial class PrivateMigration2
{
    protected override void BuildTargetModel(ModelBuilder modelBuilder)
    {
        modelBuilder
            .HasAnnotation("ProductVersion", "1.1.2")
            .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);

        modelBuilder.Entity("Server.Models.Group", b =>
            {
                b.Property<int>("IDGroup")
                    .ValueGeneratedOnAdd();

                b.Property<string>("Description");

                b.Property<string>("GroupName")
                    .IsRequired();

                b.HasKey("IDGroup");

                b.ToTable("Group");
            });

        modelBuilder.Entity("Server.Models.User", b =>
            {
                b.Property<int>("IDUser")
                    .ValueGeneratedOnAdd();

                b.Property<string>("Forename")
                    .IsRequired();

                b.HasKey("IDUser");

                b.ToTable("Users");
            });

        modelBuilder.Entity("Server.Models.UserGroup", b =>
            {
                b.Property<int>("IDUser");

                b.Property<int>("IDGroup");

                b.HasKey("IDUser", "IDGroup");

                b.HasIndex("IDGroup");

                b.ToTable("UserGroup");
            });

        modelBuilder.Entity("Server.Models.UserGroup", b =>
            {
                b.HasOne("Server.Models.Group", "Group")
                    .WithMany("UsersGroups")
                    .HasForeignKey("IDGroup")
                    .OnDelete(DeleteBehavior.Cascade);

                b.HasOne("Server.Models.User", "User")
                    .WithMany("UsersGroups")
                    .HasForeignKey("IDUser")
                    .OnDelete(DeleteBehavior.Cascade);
            });
    }
}

0 个答案:

没有答案