0

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

我跟着Code First Migrations文章,但我坚持部署阶段。我无法在项目中的任何文件中看到任何连接配置。

如何在Azure中部署应用程序时使用connectionString?


更多信息:

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

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

    <entityFramework> 
         <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
          <parameters> 
          <parameter value="mssqllocaldb" /> 
          </parameters> 
         </defaultConnectionFactory> 
         (...) 
    

当我执行本地测试,我可以看到Database.Connection.ConnectionString

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

BTW。发布窗口指出在该项目中没有找到数据库。 (这并没有真正困扰我,这是一个次要的问题)


编辑:

的DbContext,如要求:

public class MyAppContext : DbContext 
    { 
     public DbSet<Organisation> Organisations { get; set; } 
    } 
+0

请显示您的DbContext类或至少DbContextClass构造函数的代码。 –

+0

上下文是超级基本的,就像在没有构造函数的教程中一样。 – mayu

+0

我需要查看是否以及如何将连接名称传递给基础构造函数 - 如果执行不正确,可能会导致您的问题。 –

回答

0

如果您设置了SQL Server的虚拟机,然后

<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。

+0

我正在使用SQL Azure。该教程只说从portal.azure.com复制连接字符串 - 我的问题是,我不知道该把它放在哪里。 – mayu

+0

<参数值= “这里”/>

+0

更新我的答案。基本上,你现在使用LocalDB。将它更改为SQL Server一个,你应该准备好去。 –

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 [email protected];Password=p4ssw0rd!;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
.... 
<configuration> 

不要忘了也更新Azure的SQL数据库服务器的防火墙设置,使之成为您的应用程序访问。

编辑:您还可以通过在发布对话添加您的Azure的SQL数据库只改变您的Azure的环境中的数据库连接: Azure Portal

Connection String

+0

谢谢,发布窗口报告没有在项目中找到数据库:/ – mayu

+0

在发布对话期间的此步骤添加Azure数据库时,您必须在此处手动添加连接字符串。您必须从Azure门户为您的数据库复制连接字符串并添加密码。点击三个点“...”后,您可以检查您的连接。 –

+0

没有地方放置连接字符串 - 这是问题。 – mayu

1

传中,连接名称为参数去你的构造函数,然后在Web中设置连接字符串时使用相同的连接名称。配置,如:

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 [email protected];Password=p4ssw0rd!;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
.... 
<configuration> 

如果你想从本机上运行,​​记住,你需要让您的IP上的传入连接您的Azure数据库服务器防火墙。

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.在你的Web应用程序Azure的设置,添加连接字符串(它将在运行时自动注入到您的Web.config中) Azure WebApp Settings

如果哟我没有使用.Net框架进行开发,请参阅https://azure.microsoft.com/en-us/blog/windows-azure-web-sites-how-application-strings-and-connection-strings-work/了解更多详情。

0

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

要配置它,您必须首先在Azure上创建一个SQL数据库,然后从该Portal创建一个新数据库并为其命名,并确保它存在于相同的资源组和区域中以减少延迟并提高表现。

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

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

相关问题