首先是ef代码中的DbMigration 4.4

时间:2012-12-26 13:50:57

标签: entity-framework ef-code-first ef-migrations

我们首先使用ef代码4.4进行数据库迁移。我的DbContext中有一个名为Paypal的实体。当我从包管理器控制台运行Update-Database命令时,它会生成数据库,但随后会抛出异常消息

There is already an object named 'PayPal' in the database.

当我使用verbose命令检查包管理器控制台中的sql语句时,有两个用于创建paypal表的命令,一个来自Migrations文件夹中的InitialCreate.cs,另一个来自同一文件夹中的test.cs。

编辑1:
UpDateTime_InitialCreate.cs中的DateTime_test.cs方法包含以下第一个条目。

CreateTable(
                "dbo.PayPal",
                c => new
                    {
                        Id = c.Int(nullable: false, identity: true),
                        ActionUrl = c.String(),
                        Cmd = c.String(),
                        Price = c.String(),
                        Interval = c.String(),
                        IntervalType = c.String(),
                        AutoRecurring = c.String(),
                        Business = c.String(),
                        Return = c.String(),
                        CancelUrl = c.String(),
                        NotifyUrl = c.String(),
                        PlanName = c.String(),
                        Amount = c.String(),
                        CurrencyCode = c.String(),
                    })
                .PrimaryKey(t => t.Id);

检查代码时,两个文件看起来完全相同,完全没有区别。

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果我正确地读了这个(如果我错了,请纠正我),你试图在两个位置创建表而不检查它是否已经存在。在这种情况下,当您运行Update-Database时,它会尝试创建它两次,因为它在两个文件中都找到它。此时您已经在那里收到错误。

您需要进行检查以确保表格不存在于两个文件中以防止这种情况发生。

如果我读错了,请告诉我。