如何发布EF代码第一个数据库到azure
本文关键字:数据库 azure 第一个 代码 何发布 EF | 更新日期: 2023-09-27 18:17:01
我在发布实体框架数据库到azure时遇到了麻烦。
我正在使用。net框架4.5和EF 6.1.3。我的项目设置方式如下,并使用代码优先的方法:- 域实体(数据库实体)的类库
- dto的类库
- 用于存储库的类库,我在其中使用实体 执行所有CRUD操作
- 仅用于Web服务的Web api项目(没有表示,只有restful控制器)。
我的web服务项目引用了存储库库和DTOs库,我从未显式地创建过数据库,因为EF使用SQL server为我创建了它,我相信,我设置了web。配置如下:
<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发布正常,但数据库没有,或者至少当我使用website/api/restaurants调用餐馆服务时,这是获取餐馆列表的路由。
{"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是否真的在播种数据库,我遗漏了什么或者什么可能是我的错误?
首先,转到您的asp.net webconfig并将此值设置为Off:
<system.web><customErrors mode="Off"/></system.web>
你会得到一个信息丰富的黄屏死机,并有机会找出到底是什么错了。如果标题不清楚,请贴在你的答案上。
要查看azure门户中的异常,请转到您的web应用程序->工具->故障排除->实时HTTP流量,选择分析。