即使Azure Service中有数据对象,InitialMigration也为空

时间:2018-02-13 17:24:18

标签: entity-framework azure azure-sql-database azure-mobile-services ef-migrations

过去几周我一直无法使用迁移和Azure Sql数据库。

我运行enable-migrations,并创建了包含配置文件的迁移文件夹。 然后,我运行Add-Migration InitialCreate,并使用空的Up()和Down()方法创建迁移。

PM> Enable-Migrations
Checking if the context targets an existing database...
Code First Migrations enabled for project MyService.
PM> Add-Migration InitialCreate
Scaffolding migration 'InitialCreate'.
The Designer Code for this migration file includes a snapshot of your 
current Code First model. This snapshot is used to calculate the changes to 
your model when you scaffold the next migration. If you make additional 
changes to your model that you want to include in this migration, then you 
can re-scaffold it by running 'Add-Migration InitialCreate' again.

我从App Service中删除了一个旧数据库并创建了一个新数据库。现在,这是我的Web.config中的目标:

<add name="MS_TableConnectionString" connectionString="Data Source=(localdb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-MyService-20180212689875.mdf;Initial Catalog=aspnet-MyService-20180212578997;Integrated Security=True;MultipleActiveResultSets=True"
  providerName="System.Data.SqlClient" />

我有一种感觉,我的代码是针对已在azure上删除的旧数据库,但保留了我现在要添加的对象的表。

更新 删除了数据对象并创建了一个迁移,并且已经填充了不存在的表的删除代码(存在于我的上一个数据库中)。绝对是指向正确位置的问题。有任何想法吗?

对Azure来说很新,所以不确定在哪里尝试修复此问题。 任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

添加迁移后,请务必输入&#34; 更新数据库&#34;在程序包管理器控制台中,哪个命令运行Up方法来创建数据库,然后运行Seed方法以填充数据库

  

我感觉我的代码定位的是旧数据库,该数据库已在azure上删除,但保留了我现在尝试添加的对象的表格。

根据您提供的代码,您在web.config中将数据库设置为Local并删除Azure上的数据库,但您可以在Azure上将数据填充到已删除的数据库中。没有可能实现它。

实际上,当您将Web App发布到Azure时,您可以选择&#34; Excute Code First Migrations &#34;在Visual Studio中检查 TestContext 是否是您现在使用的数据库连接。

enter image description here

每次获得它们以及迁移后,您都会将数据填充到Azure上的最新数据库。您可以阅读此article以了解有关Code First迁移和部署的详细信息。