从 VS 2012 发布到 Azure 网站时,我的实体框架种子数据未插入 SQL Azure

Posted

技术标签:

【中文标题】从 VS 2012 发布到 Azure 网站时,我的实体框架种子数据未插入 SQL Azure【英文标题】:When publishing from VS 2012 to an Azure Website my Entity Framework seed data is not inserted in SQL Azure 【发布时间】:2013-02-19 03:35:45 【问题描述】:

我有一个使用 Entity Framework 5.0 和 Code First 的 ASP.NET MVC 应用程序。

我已使用 Visual Studio 2012 将我的网站发布到 Azure 网站。除了种子数据没有插入 SQL Azure 之外,一切似乎都正常工作;网站正常运行,数据库已构建,但种子数据插入。当我在本地机器上运行它时,一切正常。

根据我看到的示例,从 Visual Studio 2012 发布时,有一个名为“执行代码优先迁移”的选项(见下图)。

但是当我尝试发布我的网站时,“执行代码优先迁移”选项可用。

我相信这可能与我的解决方案的配置方式有关。我有 3 个项目组成我的应用程序。

网站 – 这是一个 ASP.NET MVC 项目。它确实有一个参考实体框架,但所有数据访问代码(DBContext)都在数据项目中 - 这是一个类库。它没有对实体框架的引用 数据 - 该项目引用了实体框架。我有一个继承自 DbMigrationsConfiguration 的配置类。在 这个 Configuration 类我重写了 Seed 方法。

这一切都在我的本地电脑上运行。大多数情况下,一切都在 Azure 上运行;网站正常工作,建立数据库,但未插入种子数据。

对于我的场景,当我从 Visual Studio 2012 发布时,是否有任何建议如何让种子数据插入 SQL Azure?

【问题讨论】:

您可能需要在 web.config 文件中定义实体框架上下文。详细使用说明见here。 【参考方案1】:

您需要手动编辑您的 pubxml 文件 (Properties/PublishingProfiles/YourName.pubxml) 以使复选框出现。我有一篇博客文章描述了这里的情况和解决方案:http://www.dominicstpierre.net/2012/11/enable-code-first-migrations-check-box.html

这部分需要手动修改

<PublishDatabaseSettings>
  <Objects xmlns="">
    <ObjectGroup Name="Namespace.Models.YourDBClass" Order="1" Enabled="True">
      <Destination Path="your-connection-string-goes-here" />
      <Object Type="DbCodeFirst">
        <Source Path="DBMigration" DbContext="Namespace.Models.YourDBClass, AssamblyName" MigrationConfiguration="Namespace.Migrations.Configuration, Assambly" Origin="Convention" />
      </Object>
    </ObjectGroup>
  </Objects>
</PublishDatabaseSettings>

通过继承 DbContext 的类更改 Namespace.Models.YourDBClass,更改 Namespace.Migratins.Configuration 以适合您的迁移配置命名空间,并使用您的 Assambly 名称更改 Assambly。

保存并打开发布向导,您将拥有该复选框。

【讨论】:

以上是关于从 VS 2012 发布到 Azure 网站时,我的实体框架种子数据未插入 SQL Azure的主要内容,如果未能解决你的问题,请参考以下文章

尝试从 VS 2012 发布网站时导致 NormalizeServiceUrl 和 Missing 或 Invalid 属性错误的原因

无法将 Azure VM 上托管的 WCF 服务引用添加到 VS2015 项目

无法从 .net 核心应用程序发布到 Azure Web 应用程序

Azure WebApp上VS持续交付的程序集错误

.Net用VS 2012远程调试Win2003网站

azure blob 存储“找不到有效的帐户信息组合”