每个表中的列名必须是唯一的。表'dbo.AspNetUsers'中的列名'前缀'被多次指定

时间:2016-02-24 00:07:28

标签: asp.net entity-framework ef-migrations

每次尝试更新数据库时,我都会收到此错误消息。这很奇怪,因为当我在迁移中查看我的表时,它只有一次。

CreateTable(
            "dbo.AspNetUsers",
            c => new
            {
                Id = c.String(nullable: false, maxLength: 128),
                Prefix = c.String(nullable:true),
                FirstName = c.String(nullable:false,maxLength:250),
                LastName = c.String(nullable:false,maxLength:250),
                Suffix = c.String(nullable: true),
                Email = c.String(maxLength: 250),
                EmailConfirmed = c.Boolean(nullable: false),
                PasswordHash = c.String(),
                SecurityStamp = c.String(),
                PhoneNumber = c.String(),
                PhoneNumberConfirmed = c.Boolean(nullable: false),
                TwoFactorEnabled = c.Boolean(nullable: false),
                LockoutEndDateUtc = c.DateTime(),
                LockoutEnabled = c.Boolean(nullable: false),
                AccessFailedCount = c.Int(nullable: false),
                UserName = c.String(nullable: false, maxLength: 256),
            })
            .PrimaryKey(t => t.Id)
            .Index(t => t.UserName, unique: true, name: "UserNameIndex");

如果您有任何想法,请告诉我。

提前致谢。

3 个答案:

答案 0 :(得分:0)

在Entity框架中,有4种数据库初始化策略 1)CreateDatabaseIfNotExists 2)DropCreateDatabaseIfModelChanges 3)DropCreateDatabaseAlways 4)自定义DB初始化程序  我认为你选择了第一个策略(CreateDatabaseIfNotExists),你可以移动第二个策略(DropCreateDatabaseIfModelChanges)。

答案 1 :(得分:0)

其实我需要做的是:

  

块引用   使用-IgnoreChanges标志运行Add-Migrations命令。然后再次运行Update-Database。

见这个帖子:

Column names in each table must be unique. Column name 'StripeRecipientId' in table 'dbo.Foos' is specified more than once

答案 2 :(得分:-1)

如果说“已经存在一次”,或许你需要改变表而不是创建它。你不能创建已经存在的东西吗?

除非我读错了。