【问题标题】:EF needs Update DB every time I debug my project每次我调试我的项目时,EF 都需要更新数据库
【发布时间】:2014-05-16 13:36:38
【问题描述】:

我使用 EF6 和 MVC5 我在我的项目中使用代码优先。这是我的 DbContext:

    public class ProjectServiceDBContext:DbContext
{
    public ProjectServiceIranDBContext()
        : base("ProjectServiceDBContext")
    { }
    public DbSet<Service> Services { get; set; }
    public DbSet<FormPost> FormPosts { get; set; }
    public DbSet<Factory> Factories { get; set; }
    public DbSet<PictureGallery> PictureGallery { get; set; }
    public DbSet<Blog> Blog { get; set; }
    public DbSet<Comment> Comment { get; set; }
    public DbSet<User> Users { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Configurations.Add(new ServiceMapping());
        modelBuilder.Configurations.Add(new FactoryMapping());
        modelBuilder.Configurations.Add(new FormPostMapping());
        modelBuilder.Configurations.Add(new PictureGalleryMapping());
        modelBuilder.Configurations.Add(new BlogMapping());
        modelBuilder.Configurations.Add(new CommentMapping());
        modelBuilder.Configurations.Add(new UserMapping());
    }
}

在我将新字段添加到我的博客模型之前,一切都很好。 我使用迁移来更新我的数据库。但它仅适用于一次调试,如果我停止调试并再次开始调试,我会收到更新数据库的错误:

支持“ProjectServiceDBContext”上下文的模型在创建数据库后发生了变化。考虑使用 Code First 迁移来更新数据库 (http://go.microsoft.com/fwlink/?LinkId=238269)。

每次调试前我都应该使用 add-migration 和 update-database

我该怎么办?

我还在我的解决方案中删除了 Migration 文件夹,并删除了我在数据库中的表,然后重试,但它不起作用。我也创建了新的 DbContext 但仍然存在此错误。

【问题讨论】:

    标签: c# entity-framework ef-code-first asp.net-mvc-5


    【解决方案1】:

    尝试将其放入 DbContext 的构造函数中:

    Database.SetInitializer<ProjectServiceDBContext>(null);
    

    默认情况下,实体框架代码优先使用 CreateDatabaseIfNotExists 初始化程序。我认为这就是导致您的问题的原因..

    【讨论】:

      【解决方案2】:

      如果您更改代码优先的数据库模型,则需要更新数据库以反映该更改。这就是您需要添加新迁移,然后将其应用于应用程序使用的所有数据库的时候。

      要应用于生产数据库,您可能需要使用 update-database -script 生成更改的 SQL 脚本。

      【讨论】:

        【解决方案3】:

        没有回答为什么您的上下文总是过时,但您可以考虑在开发过程中使用 AutomaticMigrations。

        Enabling Migrations部分

        【讨论】:

          猜你喜欢
          • 2021-12-29
          • 2020-10-02
          • 2018-12-03
          • 2015-06-10
          • 1970-01-01
          • 1970-01-01
          • 2021-11-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多