我使用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());
}
}
在我向Blog模型中添加新字段之前,一切都很好。 我使用迁移来更新我的数据库。但它只适用于一个调试,如果我停止调试并再次开始调试,我会收到更新数据库的错误:
支持&#39; ProjectServiceDBContext&#39;自创建数据库以来,上下文已更改。考虑使用Code First Migrations来更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。
我应该在每次调试之前使用add-migration和update-database
我该怎么办?
我还在我的解决方案中删除了Migration文件夹,并删除了我在数据库中的表格,然后重试并且它不起作用。我也创建了新的DbContext但仍存在此错误。
答案 0 :(得分:1)
尝试将它放在DbContext的构造函数中:
Database.SetInitializer<ProjectServiceDBContext>(null);
默认情况下,Entity Framework Code-First使用CreateDatabaseIfNotExists初始值设定项。我认为这是造成问题的原因..
答案 1 :(得分:0)
如果更改代码优先的数据库模型,则需要更新数据库以反映该更改。那时您需要添加新的迁移,然后将其应用于应用程序使用的所有数据库。
要应用于生产数据库,您可能希望使用update-database -script
生成更改的SQL脚本。
答案 2 :(得分:0)
没有回答为什么您的上下文不断过时,但您可以考虑在开发过程中使用AutomaticMigrations。
部分