C# EF代码首次迁移失败

C# EF代码首次迁移失败,c#,.net,entity-framework,C#,.net,Entity Framework,我正在尝试使用EF6和代码优先迁移更新数据库。迁移A将完成所有步骤,我将在迁移结束时进行跟踪。但它随后错误地指出: System.Data.SqlClient.SqlException (0x80131904): Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is u

我正在尝试使用EF6和代码优先迁移更新数据库。迁移
A
将完成所有步骤,我将在迁移结束时进行跟踪。但它随后错误地指出:

System.Data.SqlClient.SqlException (0x80131904): Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
System.Data.SqlClient.SqlException(0x80131904):子查询返回的值超过1。当子查询在=、!=、=或者当子查询用作表达式时。
迁移
B
甚至没有启动,查看数据库时,迁移
A
还没有提交


它似乎也只会影响这一个数据库,因为99%的其他客户已经迁移而没有问题。我们尝试了SQL2008和2014,结果相同。db模型是用C#、.NET 4.6和EF6.1.3编写的,我在注释中采纳@stuartd的建议,将迁移输出到SQL脚本并在服务器上运行。这样做可以隔离迁移失败的原因。它没有在代码中的准确行出错的原因是因为迁移发生在事务中。

如果直接运行迁移脚本,它会工作吗?如果是这样,迁移历史记录可能已损坏。请编写示例代码。如果只有一个特定的数据库发生这种情况,则其中存在数据错误。没有满足某些约束条件。从这个问题上说不出来。@stuartd不,不!谢谢,我完全忘了做那件事。我能够确定这个问题。下一个问题是,为什么代码迁移要运行到完成,然后才出错,而不是在生成错误的代码语句处。