如何将EF代码的第一个数据库发布到azure

时间:2015-10-10 19:56:16

标签: c# asp.net entity-framework web-services azure

我无法将我的Entity Framework数据库发布到azure。

我正在使用.NET framework 4.5和EF 6.1.3。我的项目设置方式如下,并使用代码优先方法:

  • 域实体(数据库实体)的类库
  • DTO的类库
  • 存储库的类库,我使用Entity
  • 执行所有CRUD操作
  • 仅针对Web服务的Web api项目(没有演示文稿,只有安静的控制器)。

我的Web服务项目引用了存储库和DTO库,我从未明确创建数据库,因为EF使用SQL server express为我创建了它我相信,我按如下方式设置了web.config:

<connectionStrings>
 <add name="Database" connectionString="Server=(localdb)\v11.0;Database=Database;Trusted_Connection=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

在我的项目中,数据库与所有表和关系一起创建。我在存储库中添加了一些初始迁移,如此

namespace Project.Repository.Migrations
{
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq;

internal sealed class Configuration : DbMigrationsConfiguration<Project.Repository.ProjectContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
        AutomaticMigrationDataLossAllowed = true;
    }

    protected override void Seed(Project.Repository.ProjectContext context)
    {
        Guid userId = new Guid();
        Guid restaurantId = new Guid();
        context.Users.AddOrUpdate(
            u => u.Id, new Domain.Security.User { Id = userId, Age = 18, Description = "I like restaurants", Email = "user@gmail.com", Password = "12345", Username = "someuser" }
            );

        context.Restaurants.AddOrUpdate(
                r => r.Id,
                new Domain.Restaurants.Restaurant
                {
                    Id = restaurantId,
                    Name = "mcdonalds",
                    Description = "best restaurant",
                    FacebookUrl = "www.facebook.com",
                    GoogleUrl = "www.google.com",
                    InstagramUrl = "www.instagram.com",
                    TwitterUrl = "www.twitter.com",
                    Votes = 3.5f,
                    UsersWhoLike = new List<Domain.Security.User>() { context.Users.FirstOrDefault(u => u.Id == userId) }
                }
            );
        context.SaveChanges();
    }
}
}

当我设置将项目发布到我的azure网站时,webservices发布没事,但数据库没有,或者至少每当我用网站/ api /餐馆打电话给餐馆服务时,这是获取列表的途径。餐馆说。

{"Message":"An error has occurred."}

我的azure数据库连接字符串设置如下:

Data Source=tcp:someidentifier.database.windows.net,1433;Initial Catalog=Database;Integrated Security=False;User ID=Database@someidentifier;Password=xxxxxx;Connect Timeout=30;Encrypt=True

我不知道发生了什么,我不知道azure是否真的在播种数据库,我遗漏了什么或者我的错误是什么?

2 个答案:

答案 0 :(得分:1)

首先,转到asp.net webconfig并将此值设置为Off:

<system.web><customErrors mode="Off"/></system.web> 

你将获得一个信息丰富的黄色死亡屏幕,并有机会弄清楚实际上是什么问题。如果YoD不清楚,请将其贴在你的答案上。

答案 1 :(得分:1)

要查看azure portal中的例外,请转到您的网络应用 - &gt;工具 - &gt;疑难解答 - &gt;实时HTTP流量,选择分析。