【发布时间】:2015-12-27 00:20:21
【问题描述】:
我有一个名为 Foo 的模型类,其中包括这些属性。
public string StripeRecipientId { get; set; }
public override bool HasProvidedBillingInformation
{
get
{
// return !string.IsNullOrEmpty(this.StripeRecipientId);
return false;
}
}
我已启用迁移并正在使用 Code First。当我运行update-database commandlet 时,无论是否指定了-Force 选项,我都会收到此错误:
Column names in each table must be unique.
Column name 'StripeRecipientId' in table
'dbo.Foos' is specified more than once.
我反复检查和三次检查,在我的模型和表格中只有一列该名称。此列是由之前运行的 update-database 命令行开关创建的。
我很想删除我的数据库,然后应用迁移,但这意味着我必须创建大量测试数据才能测试我刚刚开发的功能。
我正在使用实体框架 v6.1.2。
如何摆脱这个错误?
【问题讨论】:
-
也许 EF 认为没有应用之前的迁移并正在尝试重新应用它?尝试“update-database -verbose”查看它正在尝试应用哪些迁移
-
我忘了说,我总是做
-Verbose。它正在尝试再次重新创建该列,我不知道为什么。 -
好习惯 :) 是尝试应用旧迁移,还是您的最新迁移尝试创建列?
-
我从来没有在代码优先迁移方面遇到过太多运气。数据库初始化程序似乎定期执行此操作(在运行应用程序时导致错误)。我真的很想先做代码,特别是从源代码控制的角度来看..但我没有太多运气。并且在多个上下文中,这些命令是荒谬的。相比之下,Data First 似乎要容易得多。
标签: entity-framework entity-framework-6 code-first