数据库数据中已经有一个名为“cars”的对象

时间:2016-05-16 11:58:36

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

我首先使用代码开发MVC项目。我首先使用代码创建我的数据库,如下所示:

public class DataContext:DbContext
{
    public DataContext()
        : base("DefaultConnection")
    {
        this.Configuration.LazyLoadingEnabled = false;
        this.Configuration.ProxyCreationEnabled = false;

        Database.SetInitializer(
            new MigrateDatabaseToLatestVersion<DataContext, MigrationsConfiguration>()
            );
    }
    public DbSet<Member> Members { get; set; }
    public DbSet<Traffic> Traffics { get; set; }
    public DbSet<Car> Cars { get; set; }
    public DbSet<Validation> Validations { get; set; }
    public DbSet<Log> Logs { get; set; }
    public DbSet<File> Files { get; set; }
}

我在公司服务器上传了我的项目,他们使用了我的项目并输入了一些数据库值,所以有时我在数据库中更改了一些列,并且我在SQL设计中正常添加到数据库表中,所以我改了一些部分我的代码也是如此,现在我上传了我发布的文件,我收到了这个错误:

  

数据库中已有一个名为“Cars”的对象。

注意:我无法删除数据库,因为我有数据,因为我说我将新列添加到数据库,但我的应用程序无法连接到该数据库。

迁移部分:

public class MigrationsConfiguration : DbMigrationsConfiguration<DataContext>
{
    public MigrationsConfiguration()
    {
        this.AutomaticMigrationDataLossAllowed = true;
        this.AutomaticMigrationsEnabled = true;
    }
}

1 个答案:

答案 0 :(得分:1)

由于您已经在生产数据库中获得了数据,因此请勿使用自动迁移。您的首要任务是让您的数据库与您的模型保持同步。如何执行此操作取决于您的模型的复杂程度,例如:多少桌子。我的建议是:

  • 禁用自动迁移
  • 将您的开发副本指向空白数据库,并创建初始迁移
  • 运行Update-Database -Script以生成迁移的SQL脚本
  • 手动更改脚本,以便可以在生产数据库上运行
  • 在您的生产数据库上运行

一旦达到这一点,请确保每次要对模型进行更改时添加迁移,而不是手动创建。