在Windows Azure(预览)管理门户中,您可以更改网站的配置选项(请参阅http://www.windowsazure.com/en-us/manage/services/web-sites/how-to-configure-websites/#howtochangeconfig)。
我目前通过Web.Release.Config为我的ADO.NET Entity Framework连接设置连接字符串,但我想通过管理门户设置它,但无论我使用什么,我总是会遇到以下错误:
在。中找不到指定的命名连接 配置,不打算与EntityClient提供程序一起使用, 或无效。
它适用于常规连接字符串,即没有定义元数据和映射信息的元数据键(csdl,ssdl,msl)。
这就是我的所作所为:
在“连接字符串”下,我有一个名为“ApplicationServices”的密钥,如下所示:
服务器= TCP:xxxxx.database.windows.net,1433;数据库= XXXXX;用户 ID = XXXXX XXXXX @;密码= XXXXX; Trusted_Connection = FALSE;加密= TRUE;连接 超时= 30;
这个有效。
我有另一个用于Entity Framework连接的密钥。我们称之为一个FooBarContext。它看起来像这样:
元数据= RES:// /Models.FooBarContext.csdl|res:// /Models.FooBarContext.ssdl|res://*/Models.FooBarContext.msl;provider=System。 Data.SqlClient提供方 连接 字符串=“服务器= TCP:fooserver.database.windows.net,1433;数据库= foobar的;用户 ID = MYNAME @ fooserver;密码= XXXXXXXXXX; Trusted_Connection = FALSE;加密= TRUE;连接 超时= 30;“
这个导致上述错误。它是从Web.Release.Config中的工作值复制的,带有& quot;取而代之的是“。
我尝试过其他变体:使用& quot;未触及,最后添加了元数据,但无济于事。我已经通过第二个网站重现了这个问题。
答案 0 :(得分:46)
我的问题的解决方案是从实体的“SQL Azure / SQL Server / MySQL / Custom”选择器中选择“自定义”而不是“SQL Azure”框架连接字符串,即使数据库确实在SQL Azure上运行。
答案 1 :(得分:12)
答案 2 :(得分:4)
我不仅要使用双引号(或单引号)而不是"
(并为类型选择Custom),但我还必须确保在我的转换配置中有一个虚拟值。我正在替换整个connectionStrings节点,但决定保留它并添加:
<add xdt:Transform="Replace" xdt:Locator="Match(name)" name="FooBarEntities" connectionString="temp" providerName="System.Data.EntityClient" />
没有这个,我收到以下错误:
The connection string 'FooBarEntities' in the application's configuration file does not contain the required providerName attribute.
答案 3 :(得分:0)
除上述答案外,还有两件非常重要的事情:
public MyEntities(string connectionString) :base($“name = {connectionString}”) { }
答案 4 :(得分:-1)
我遇到了同样的问题。我解决了,把这个连接字符串放在web.config中:
<add name="eManagerTurModelConnection" connectionString="metadata=res://*/ORM.eManagerFinanceModel.csdl|res://*/ORM.eManagerFinanceModel.ssdl|res://*/ORM.eManagerFinanceModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=<server>.database.windows.net;Initial Catalog=eManagerTur;Integrated Security=False;User ID=<user>;Password=<Password>;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
在我删除了我的网站的连接字符串之后,工作了,因为它没有获取我在web.config中添加的连接字符串。
英语不好...... =)