不支持关键字:'元数据' Azure功能中的错误

时间:2018-02-05 09:11:36

标签: entity-framework azure azure-functions

我在Azure功能中遇到上述错误。当我尝试使用Azure功能中的Entity Framework与我的数据库建立连接时。

我看了一些帖子,建议将连接类型更改为"自定义"来自" SQL Server"但在这之后我得到应用程序的配置文件不包含所需的providerName属性。错误。

enter image description here

现在我尝试了许多方法来解决这个问题,但还没有成功。

这是我的连接字符串 -

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

请帮忙。

3 个答案:

答案 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)

你可能已经解决了你的问题但我今天遇到了同样的问题。我解决了以下问题。

  • 为EF模型创建了一个单独的项目。
  • 添加以下代码以扩展实体类

    [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());
        }
    }
    
  • Azure功能项目中的参考项目。
  • 将连接字符串添加到Azure门户中的“应用程序设置”,并将连接类型设置为“自定义”。

答案 2 :(得分:0)

我通过使用参数化构造函数(以连接字符串作为参数)覆盖自动生成的Entities类来解决此问题。