我在Azure功能中遇到上述错误。当我尝试使用Azure功能中的Entity Framework与我的数据库建立连接时。
我看了一些帖子,建议将连接类型更改为"自定义"来自" SQL Server"但在这之后我得到应用程序的配置文件不包含所需的providerName属性。错误。
现在我尝试了许多方法来解决这个问题,但还没有成功。
这是我的连接字符串 -
metadata=res://*/Entities.csdl|res://*/Entities.ssdl|res://*/Entities.msl;provider=System.Data.SqlClient;provider connection string='data source=*******;initial catalog=****;persist security info=True;user id=****;password=*******;MultipleActiveResultSets=True;App=EntityFramework
请帮忙。
答案 0 :(得分:1)
您可以查看您身边的official EF connection string 我想您的问题与Azure门户连接字符串和web.config连接字符串之间的冲突有关。我们无法在门户网站的连接字符串中定义providerName属性。
您可以从此article了解有关冲突连接字符串的更多信息。
门户网站没有接受providerName属性的功能。因此,您需要在web.config中保留连接字符串,该字符串指定名称和providerName,但只是为连接字符串添加虚拟值。现在将该连接字符串值放在门户连接字符串中。当它运行时,它将从web.config中获取providerName,但随后使用您在Azure门户应用程序设置[连接字符串]中放置的连接字符串值覆盖web.config中的虚拟连接字符串。
此article中有一个解决方案。
尝试使用本地或虚拟连接字符串进行发布,并像在Azure应用程序设置中一样覆盖它。
答案 1 :(得分:1)
你可能已经解决了你的问题但我今天遇到了同样的问题。我解决了以下问题。
添加以下代码以扩展实体类
[DbConfigurationType(typeof(DBContextConfig))]
partial class <Entities Class Name>
{
public Entities(string connectionString)
: base(connectionString)
{
}
}
public class DBContextConfig : DbConfiguration
{
public DBContextConfig()
{
SetProviderServices("System.Data.EntityClient", SqlProviderServices.Instance);
SetDefaultConnectionFactory(new SqlConnectionFactory());
}
}
答案 2 :(得分:0)
我通过使用参数化构造函数(以连接字符串作为参数)覆盖自动生成的Entities类来解决此问题。