我正在向我的Azure API App添加一个SQL数据库。我有一个空的SQL数据库,我通过portal.azure.com单独创建。我的问题是我不知道如何设置连接字符串,以便我的应用程序使用Azure数据库。
我已经关注了Code First Migrations文章,但我仍处于部署阶段。我在项目的任何文件中都看不到任何连接配置。
如何在Azure中部署应用时设置应用的connectionString?
更多信息:
确切地说,我可以看到两件事:
Web.Config中的一些EF配置:
CellEventArgs
当我在本地执行测试时,我可以看到 <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
答案 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数据库服务器的防火墙设置,以使其可供您的应用程序访问。
答案 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)
如果您没有使用.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中添加一些配置。