【问题标题】:Error Creating Database with EF Code first on Azure首先在 Azure 上使用 EF 代码创建数据库时出错
【发布时间】:2011-08-12 03:22:42
【问题描述】:

尝试首先针对 Azure 数据库使用实体框架代码时,我不断收到无效的对象名称。这是一个 MVC 3 项目,我在其中创建了一个模型,然后使用 EF 和一个新的上下文创建了控制器。这是我为解决它而采取的步骤列表。我希望我遗漏了一些明显的东西。

  1. 下载VS 2010 SP1
  2. 下载 EF 4.1
  3. 在 Azure 中为我的外部 IP 设置防火墙例外。
  4. 在我的 Web.config 中设置 Azure 中显示的连接字符串
  5. 关闭我的防火墙以排除这种情况。

似乎索引页面正在尝试拉回结果,但解决方案并未按应有的方式创建数据库,因此没有数据库,并且在执行命令定义时出现错误。有人吗?

【问题讨论】:

  • 您是否在本地数据库中尝试过您的代码?将连接字符串更改为本地数据库并检查是否创建了数据库。如果它没有被创建,那么你知道错误出在你的 EF 代码中。

标签: azure entity-framework-4.1


【解决方案1】:

我们发现 SQL Azure 数据库不存在很重要。即使我们有一个完全空的数据库,EF 代码首先也会失败。

尝试让 EF 完全从头开始创建数据库。

【讨论】:

  • 是的,当我终于明白这一点时,我就像 Doh!谢谢
  • 你有没有想过为什么它不能存在?由于 SQL Azure 的一些限制?它应该是受支持的方案,至少在 Azure 之外,对吧?
【解决方案2】:

您可以尝试一些事情。为了确保您可以创建数据库,显然您的登录名需要访问主数据库,并且连接字符串中的 PersistSecurityInfo 需要为 True:

(在底部向下) http://social.msdn.microsoft.com/Forums/en/adonetefx/thread/1e828c99-66a9-4094-87ec-e799bd619463

其次,如果数据库尚不存在,您需要告诉应用程序创建数据库。在 Globals.asax.cs 的 Application_Start 方法中,试试这个小 sn-p:

using System.Data.Entity;
...
...
protected void Application_Start() {
   Database.SetInitializer<Models.FunContext>(new CreateDatabaseIfNotExists<Models.FunContext>());
}

希望这会有所帮助,祝您编码愉快!

【讨论】:

    猜你喜欢
    • 2018-09-18
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    相关资源
    最近更新 更多