每个表中的列名必须是唯一的。列名' StripeRecipientId'在表格中,dbo.Foos'被指定不止一次

时间:2015-09-29 13:31:16

标签: entity-framework entity-framework-6 code-first

我有一个名为Foo的模型类,其中包含这些属性。

public string StripeRecipientId { get; set; }

public override bool HasProvidedBillingInformation
{
    get
    {
        // return !string.IsNullOrEmpty(this.StripeRecipientId);

        return false;
    }
}

我已启用迁移并使用Code First。当我运行update-database命令行开关时,是否指定了-Force选项,我收到此错误:

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

我进行了双重检查并进行了三次检查,并且在我的模型和表格中只有该列的一列。这个专栏已经由前一段update-database命令行开始创建了。

我很想删除我的数据库然后应用迁移,但这意味着我必须创建大量的测试数据才能测试我刚才正在使用的功能。

我正在使用Entity Framework v6.1.2。

如何摆脱此错误?

7 个答案:

答案 0 :(得分:15)

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

<强> -Update -

这些命令应在程序包管理器控制台中运行。从主菜单:工具 - &gt; NuGet包管理器 - &gt;包管理器控制台。

答案 1 :(得分:1)

添加迁移-IgnoreChanges ,因为它对我有用,但仍然引发了更多错误。

答案 2 :(得分:1)

如果您还已在数据库表中添加了这些属性,则将继续出现这些错误。因此,我不得不从自己的表中删除属性以实现重新搭建并随后更新数据库。因此,在必须删除属性后运行 Add-Migration ,您将获得满意的结果,然后运行 Update-Database 也会令人满意。

答案 3 :(得分:1)

这对我有用。

  1. 我运行了这个Add-Migration -IgnoreChanges,但出现错误 您之前的两次迁移正在进行中。示例:Migration-1, 迁移2

  2. 我运行update-database -target Migration-1

    update-database -target Migration-2

  3. 数据库已成功创建。 Running Seed method.

答案 4 :(得分:0)

这对我来说分两个步骤:

Step 1) Just delete this column from a table in Database
Step 2) Rebuild the Project and run Project.

答案 5 :(得分:0)

对我来说,在添加/删除操作期间我必须搞砸的数据库快照与数据库中实际保留的不同,所以我最终放弃了快照更改并重新应用迁移。

答案 6 :(得分:0)

更新数据库进程正在引用较旧的迁移 [其中可能包含一些添加列脚本] ... 使用这些添加删除旧的迁移... 记得保留快照 [已保存脚本的摘要] ... 并再次运行您的迁移......它应该可以工作! 一切顺利:))