如何使用标准dotnet Web模板连接到Azure数据库

时间:2016-11-16 14:46:23

标签: azure asp.net-core asp.net-core-mvc

我非常高兴能够开始在我的Mac上开发.NET,但是在试图弄清楚这一点时感到沮丧。所以我通过调用yo aspnet创建了一个WebApplication,开箱即用它很有用。它附带了一个存储在项目中的本地数据库的连接。我遇到问题的地方是将它连接到我的天蓝色门户网站中托管的远程数据库。

我的连接字符串直接来自我的天蓝色门户网站。我更新了我的appsettings.json" DefaultConnection"属性为此值(下面缺少用户名和密码),我收到错误,如" ArgumentException:不支持关键字:' server'。"我尝试了几种不同的连接字符串,但没有一种正常工作。

诚然,我是所有这一切的新手,所以我可能遗漏了一些简单的东西,但在线搜索我还没有找到解决方案。

Server=tcp:mydbserver.database.windows.net,1433;Initial Catalog=LH;Persist Security Info=False;User ID={your_username};Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

供参考这里是我的整个appsettings.json(没有用户名& passwrod ...)

{
  "ConnectionStrings": {
    //"DefaultConnection": "Data Source=LH.db"
    "DefaultConnection": "Server=tcp:mydbserver.database.windows.net,1433;Initial Catalog=lighthouseFSQ;Persist Security Info=False;User ID={Username};Password={Password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"        
  },
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}

非常感谢任何帮助。仅供参考我在Windows VS2015中尝试过此操作并且运行正常。

1 个答案:

答案 0 :(得分:4)

默认情况下,dotnet new -t web tempalte使用SQLite数据库,因此仅更改连接字符串不足以更改提供程序。

您还需要从Microsoft.EntityFrameworkCore.Sqlite中删除project.json包,并将其替换为Microsoft.EntityFramework.SqlServer(假设您使用的是Azure的SQLServer)。然后在Startup.cs中,您需要替换

// Add framework services.
services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlite(Configuration.GetConnectionString("DefaultConnection")));

// Add framework services.
services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

并在必要时更改名称空间。

<强>更新

在project.json中,您只需要使用Sqlite更改依赖关系。

"dependencies": {
  ...
  "Microsoft.EntityFrameworkCore.Sqlite": "1.0.1",
  ...
  }
}

"dependencies": {
  ...
  "Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
  ...
  }
}

如果Microsoft.EntityFrameworkCore.Sqlite.Design也有Microsoft.EntityFrameworkCore.SqlServer.Design,那也是var table = table.DefaultView.ToTable(false, "col1", "Col2"); ,那就是脚手架等。