c# - 在不破坏已发布站点的情况下,代码优先 EF 中更新数据库模型的工作流程是什么?

标签 c# entity-framework ef-code-first code-first

假设我有一个只有一个上下文的简单网站

public class DataContext : DbContext
   {
       public DbSet<Stuff> Stuff { get; set; }          
   }

和一个模型

 public class Stuff 
  {
   public int ID {get;set; }
   public string Name {get;set;}
 }

我正在使用代码优先 EF 模型,我点击了更新数据库,它创建了我的表,然后我发布了我的网站。一切都很好。但是,然后我决定要向我的模型添加一个属性

public class Stuff 
  {
   public int ID {get;set; }
   public string Name {get;set;}
   public int StuffType {get;set;}
 }

现在我点击 update-database 并使用新属性更新数据库,但是发布的站点现在已损坏,因为它的模型与数据库模型已过时。

除了在任何人注意到之前疯狂地尝试重新发布该站点之外,是否有任何其他方法可以在不破坏已发布站点的情况下使用代码优先迁移?

我需要有两个数据库吗?如果是这样,我该如何维护两者之间的模型?由于我通常有(至少)两个 git 分支,并且发布的站点正在运行 master 分支的代码,而我正在开发分支上工作,这进一步加剧了这一点——这是我要修改我的分支的地方模型。

避免此类问题的通常工作流程是什么?

最佳答案

尝试为您的 DataContext 禁用数据库初始化程序。 查看此答案 Entity Framework 6.1.1 disable model compatibility checking

关于c# - 在不破坏已发布站点的情况下,代码优先 EF 中更新数据库模型的工作流程是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37026615/

相关文章:

entity-framework - 使用 Code First 迁移的 Entity Framework 的唯一约束

c# - LINQ - 对多列进行分组/求和

c# - 登录时向浏览器中所有打开的客户端发送消息

c# - 如何使用 Entity Framework Code First 将 C# int 映射到 SqlServer tinyint?

c# - 什么是 modelBuilder.entity(Of x)

c# - InsertOnSubmit 在 DbContext.DbSet 中等效于首先使用 Entity Framework 4 代码

c# - 为什么我不能将通用列表声明为可为空?

C# 从数组集合中删除 "partial"重复项

c# - 同一类型的多个对象集

c# - EF 中好友列表最简单的方法是什么?