【问题标题】:Tables not created with Entity Framework on Azure未在 Azure 上使用 Entity Framework 创建的表
【发布时间】:2014-02-12 23:34:25
【问题描述】:

我正在使用使用 Code First 和 Fluent API 的实体框架。

在我的本地机器上开发时,数据库和表按预期创建,一切正常。

在部署到我的 Azure Web 角色时,会创建数据库,但从未创建表。如果我尝试接触 DbContext 的 HTTP 请求,请求会超时,最后我的 Web 角色只返回“服务不可用”。

模型很大,但不是特别大(在我的开发机器上创建了 43 个表)。

这里有什么问题?这是我的 Azure SQL 连接字符串,您可以在其中看到我将超时设置得很高:

<add name="MyConnectionString" connectionString="Server=tcp:myserveronazure.database.windows.net,1433;Database=MyDatabase;User ID=MyUser@myserveronazure;Password=thepassword;Trusted_Connection=False;Encrypt=True;Connection Timeout=120;PersitSecurityInfo=true;" providerName="System.Data.SqlClient" />

编辑:在 RDP:ing 进入 Azure VM 后,我在事件日志中看到 w3wp.exe(如果我没记错的话,是 IIS 工作进程)崩溃。日志没有列出任何错误消息。

【问题讨论】:

  • 您在数据库中使用迁移?你的数据库有一个 mi 迁移表?
  • 我没有使用任何我知道的迁移。但是在我的开发机器上的数据库中创建了一个“__MigrationHistory”表,即使数据库是从头开始创建的。这意味着什么?
  • 我知道的唯一自定义是在我的 DbContext 子类中使用 Fluent API,我将在其中覆盖 OnModelCreating 方法。
  • 您的数据库中有信息还是为空?我告诉你这是因为我遇到了类似的问题,并且必须与实体框架数据库初始化程序有关。
  • 禁用迁移并删除您的数据库,然后启动您的应用程序并检查您的数据库是否没有 _MigrationHistory 表。然后再试一次。

标签: entity-framework azure azure-sql-database


【解决方案1】:

Enityframework 默认有三个 Database Initializer CreateDatabaseIfNotExists,DropCreateDatabaseWhenModelChangesDropCreateDatabaseAlways,当你第一次点击上下文时执行,如果你使用迁移(我认为是这种情况)你必须使用MigrateDatabaseToLatestVersion 在应用程序部署中工作的初始化程序。希望它有效!

【讨论】:

  • 感谢您的回答。我没有使用迁移。我无法解决这个问题,最终通过在我的开发机器上生成数据库脚本在 Azure 上手动创建数据库。
猜你喜欢
  • 1970-01-01
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-12
相关资源
最近更新 更多