每个 table 中的列名必须是唯一的。 table 'dbo.Foos' 中的列名 'StripeRecipientId' 被多次指定
Column names in each table must be unique. Column name 'StripeRecipientId' in table 'dbo.Foos' is specified more than once
我有一个名为 Foo
的模型 class,它具有以下属性。
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.
我仔细检查并三次检查,在我的模型和 table 中只有一列该名称。此列已由 update-database
commandlet 的前一个 运行 刚才创建。
我很想删除我的数据库,然后应用迁移,但这意味着我必须创建大量测试数据才能测试我正在处理的功能。
我正在使用 Entity Framework v6.1.2.
如何摆脱这个错误?
运行 带有 -IgnoreChanges
标志的 Add-Migration
命令。然后再运行Update-Database
-更新-
这些命令应该在程序包管理器控制台中 运行。从主菜单:工具 -> NuGet 包管理器 -> 包管理器控制台。
Add-Migration -IgnoreChanges 因为它对我有用,但仍然抛出更多错误。
如果您还在数据库 table 中添加了这些属性,您将继续收到这些错误。所以我不得不从我自己的 table 中删除属性以实现重新脚手架并随后更新数据库。所以 运行 Add-Migration 一定是删除了属性之后你会得到一个满意的结果,然后 运行 Update-Database也希望能满意
这对我有用。
我 运行 这个 Add-Migration -IgnoreChanges
我得到了错误
您之前的两次迁移正在等待中。示例:迁移 1,
迁移-2
我运行update-database -target Migration-1
和
update-database -target Migration-2
数据库创建成功。 Running Seed method.
这分两步对我有用:
Step 1) Just delete this column from a table in Database
Step 2) Rebuild the Project and run Project.
简单删除 Migration 文件夹中的文件和 运行 以下命令:
add-migration seednew1
然后:
update-database -verbose
对我来说,我在 Add/Remove 操作期间一定搞砸了的数据库快照与数据库中实际保存的不同,所以我最终放弃了快照更改并重新应用迁移。
更新数据库进程正在引用较旧的迁移[可能包含一些添加列脚本] ...
使用这些添加删除较旧的迁移...
记得保留快照 [已保存脚本的摘要] ...
并且 运行 您的迁移再次...它应该工作!
一切顺利:))
关于让 -IgnoreChanges 起作用的人们的问题
所以对于我的情况,我发现问题是 -IgnoreChanges 选项特定于 Entity Framework,而我正在使用 EFCore。我发现一个解决方案是审查数据库项目的迁移文件夹中的各个提交。通过遵循 this link 的建议并注释掉特定的 Up 函数体,我能够 运行 Update-Database。更新数据库有效。
我遇到过以下情况:
我首先使用查询向数据库添加了一列,然后我尝试在包管理器控制台中执行“更新数据库”。他给了我一个错误。我从 table 中删除了错误的列,并再次在包管理器控制台 vs2019 中执行了“更新数据库”并且它起作用了
我有一个名为 Foo
的模型 class,它具有以下属性。
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.
我仔细检查并三次检查,在我的模型和 table 中只有一列该名称。此列已由 update-database
commandlet 的前一个 运行 刚才创建。
我很想删除我的数据库,然后应用迁移,但这意味着我必须创建大量测试数据才能测试我正在处理的功能。
我正在使用 Entity Framework v6.1.2.
如何摆脱这个错误?
运行 带有 -IgnoreChanges
标志的 Add-Migration
命令。然后再运行Update-Database
-更新-
这些命令应该在程序包管理器控制台中 运行。从主菜单:工具 -> NuGet 包管理器 -> 包管理器控制台。
Add-Migration -IgnoreChanges 因为它对我有用,但仍然抛出更多错误。
如果您还在数据库 table 中添加了这些属性,您将继续收到这些错误。所以我不得不从我自己的 table 中删除属性以实现重新脚手架并随后更新数据库。所以 运行 Add-Migration 一定是删除了属性之后你会得到一个满意的结果,然后 运行 Update-Database也希望能满意
这对我有用。
我 运行 这个
Add-Migration -IgnoreChanges
我得到了错误 您之前的两次迁移正在等待中。示例:迁移 1, 迁移-2我运行
update-database -target Migration-1
和update-database -target Migration-2
数据库创建成功。
Running Seed method.
这分两步对我有用:
Step 1) Just delete this column from a table in Database
Step 2) Rebuild the Project and run Project.
简单删除 Migration 文件夹中的文件和 运行 以下命令:
add-migration seednew1
然后:
update-database -verbose
对我来说,我在 Add/Remove 操作期间一定搞砸了的数据库快照与数据库中实际保存的不同,所以我最终放弃了快照更改并重新应用迁移。
更新数据库进程正在引用较旧的迁移[可能包含一些添加列脚本] ... 使用这些添加删除较旧的迁移... 记得保留快照 [已保存脚本的摘要] ... 并且 运行 您的迁移再次...它应该工作! 一切顺利:))
关于让 -IgnoreChanges 起作用的人们的问题
所以对于我的情况,我发现问题是 -IgnoreChanges 选项特定于 Entity Framework,而我正在使用 EFCore。我发现一个解决方案是审查数据库项目的迁移文件夹中的各个提交。通过遵循 this link 的建议并注释掉特定的 Up 函数体,我能够 运行 Update-Database。更新数据库有效。
我遇到过以下情况: 我首先使用查询向数据库添加了一列,然后我尝试在包管理器控制台中执行“更新数据库”。他给了我一个错误。我从 table 中删除了错误的列,并再次在包管理器控制台 vs2019 中执行了“更新数据库”并且它起作用了