Asp.net mvc ASP MVC 4如何知道您使用了哪种数据库迁移';你在吗?

Asp.net mvc ASP MVC 4如何知道您使用了哪种数据库迁移';你在吗?,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我一直在用代码优先的方法在现有数据库上开发我的应用程序 直到现在,我才需要运行迁移。我不想在我的模型改变时破坏这个数据库,因为它非常大,而且里面有很好的样本数据 如果框架不告诉我有待应用的更改,我如何运行迁移?(代码在我从Rails迁移时运行,而我希望从这里迁移) 我不想设置自动迁移,因为我正在处理一个包含大量种子数据的大型数据库,我不想删除/重新创建这些数据。我还想控制制作什么、删除什么以及何时删除 当我将其投入生产时,这也是必需的,我希望通过迁移而不是手动展开更改。如何通过添加/删除所需字段

我一直在用代码优先的方法在现有数据库上开发我的应用程序

直到现在,我才需要运行迁移。我不想在我的模型改变时破坏这个数据库,因为它非常大,而且里面有很好的样本数据

如果框架不告诉我有待应用的更改,我如何运行迁移?(代码在我从Rails迁移时运行,而我希望从这里迁移)

我不想设置自动迁移,因为我正在处理一个包含大量种子数据的大型数据库,我不想删除/重新创建这些数据。我还想控制制作什么、删除什么以及何时删除

当我将其投入生产时,这也是必需的,我希望通过迁移而不是手动展开更改。如何通过添加/删除所需字段进行迁移,而不让EF关心我在做什么

如果我知道它是如何知道它在哪个轨道上的(比如Rails),我能骗她认为她可以运行我想要的迁移吗

我认为通过以下方式设置初始值设定项:

Database.SetInitializer<MyDbContext>(new CreateDatabaseIfNotExists<MyDbContext>
Database.SetInitializer(新的CreateDatabaseIfNotExists

回答标题中的问题,因为有一个sys table
\uuu MigrationHistory
告诉EF您的表与数据库中的表不同

关于如何操作(从package manager控制台):

  • 启用迁移
    • 在配置类中设置
      AutomaticMigrations=false;
    • 设置
      数据库。设置初始值设定项(null)
      ,使其不会创建或更新
  • AddMigration
    将任何挂起的更改排入更改模型队列
  • updatedatabase
    将调用
    MigrationName.Up
    方法来更改数据库的任何更改(SAN丢失数据)
EF使用一个表“\u MigrationHistory”存储迁移名称/顺序。您可以在开发环境中备份此表,然后删除这些记录。部署到生产环境时,您可以运行迁移。另一个选项是使用数据库比较(dev/prod)和获取脚本来更改表/数据