具有实体框架的Azure Api / Web应用程序 - SQL数据库连接字符串

时间:2016-04-29 07:14:01

标签: entity-framework azure azure-sql-database azure-api-apps

我正在向我的Azure API App添加一个SQL数据库。我有一个空的SQL数据库,我通过portal.azure.com单独创建。我的问题是我不知道如何设置连接字符串,以便我的应用程序使用Azure数据库。

我已经关注了Code First Migrations文章,但我仍处于部署阶段。我在项目的任何文件中都看不到任何连接配置。

如何在Azure中部署应用时设置应用的connectionString?

更多信息:

确切地说,我可以看到两件事:

  1. 在Web.Debug / Release.config文件中注释掉connectionStrings部分。
  2. Web.Config中的一些EF配置:

    CellEventArgs
  3. 当我在本地执行测试时,我可以看到 <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="mssqllocaldb" /> </parameters> </defaultConnectionFactory> (...)

    Database.Connection.ConnectionString

    顺便说一句。发布窗口指出在项目中未找到任何数据库。 (这不是真的打扰我,这是次要问题)

    编辑:

    DbContext,根据要求:

    Data Source=(localdb)\mssqllocaldb;Initial Catalog=XDataAPI.Models.MyContext;Integrated Security=True;MultipleActiveResultSets=True
    

5 个答案:

答案 0 :(得分:1)

将连接名称作为param传递给构造函数,然后在web.config中设置连接字符串时使用相同的连接名称,如下所示:

public class MyAppContext : DbContext 
{ 
    public MyAppContext():base("MyConnectionName"){}
    public DbSet<Organisation> Organisations { get; set; } 
}

然后,在web.config中:

<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="MyConnectionName" connectionString="Server=tcp:test.database.windows.net,1433;Database=testdb;User ID=test@test;Password=p4ssw0rd!;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
....
<configuration>

如果要从本地计算机运行,请记住您需要允许来自Azure数据库服务器防火墙上IP的传入连接。

答案 1 :(得分:0)

如果设置SQL Server VM,则

<add name="DataContext" connectionString="Data Source=VMname.cloudapp.net; Initial Catalog=catalog; User ID=login;Password=password; MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />

如果您设置了SQL Azure,那么that tutorial should be used

关于连接字符串的位置,请参阅一些documentation。您使用LocalDB,而不是使用SQL Server。

答案 2 :(得分:0)

您应该只需在web.config中更新数据上下文的连接字符串即可使用Azure SQL数据库。对于我的testproject,它位于web.config的顶部:

<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="WebApplication4Context" connectionString="Server=tcp:test.database.windows.net,1433;Database=testdb;User ID=test@test;Password=p4ssw0rd!;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
....
<configuration>

不要忘记更新Azure SQL数据库服务器的防火墙设置,以使其可供您的应用程序访问。

编辑:您还可以通过在“发布”对话框中添加Azure SQL DB来更改Azure环境的数据库连接: Azure Portal

Connection String

答案 3 :(得分:0)

对于.Net FW 4.5或以上:
1.你的DbContext类:

public class MyAppContext: DbContext
{
    public MyAppContext() : base("YourConnectionStringKey") { }

    public DbSet<Organization> Organizations{ get; set; }
}

2。你的Web.config:

<connectionStrings>
    <add name="YourConnectionStringKey" connectionString="DummyValue" providerName="System.Data.SqlClient" />
  </connectionStrings>

3。在Azure WebApp设置中,添加连接字符串(将在运行时自动注入Web.config) Azure WebApp Settings

如果您没有使用.Net框架进行开发,请参阅https://azure.microsoft.com/en-us/blog/windows-azure-web-sites-how-application-strings-and-connection-strings-work/以获取更多详细信息。

答案 4 :(得分:0)

如果连接字符串缺少web.config,那么它使用的是默认名称DefaultConnection,它指的是使用SQL或SQL Express安装的localdb实例。

要配置它,您必须首先在Azure上创建一个SQL数据库,从Portal创建一个新数据库并为其命名,并确保它存在于同一资源组和区域中,以减少延迟并改善性能

打开创建的数据库,您将找到许多平台的连接字符串,复制.Net的一个并转到Web App设置,您应找到连接字符串的位置,添加一个新的并将其命名为DefaultConnection和添加刚刚从数据库刀片中复制的连接字符串的值

首次运行应用程序时,代码首先将连接到数据库并应用迁移,如果您在发布向导期间指定了这一点,那么也会在web.config中添加一些配置。