带有数据库的 Azure 函数连接字符串 使用实体框架的第一种方法
Posted
技术标签:
【中文标题】带有数据库的 Azure 函数连接字符串 使用实体框架的第一种方法【英文标题】:Azure Function Connection String with database First approch with Entity Framework 【发布时间】:2017-10-23 08:52:17 【问题描述】:我有一个使用数据库优先方法连接字符串的 Azure 函数。连接字符串位于包含敏感数据的local.settings.json
文件中。
"IsEncrypted": false,
"Values":
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"AzureWebJobsDashboard": "UseDevelopmentStorage=true"
,
"ConnectionStrings":
"MyConnectionString": "data source=localhost\\sqlexpress;initial catalog=SampleQrCodes;user id=sa;password=****;MultipleActiveResultSets=True;App=EntityFramework"
如果我尝试删除 providerName,它会给我以下异常:
上下文在 Code First 模式下使用,代码是从 EDMX 文件生成的,用于 Database First 或 Model First 开发。这将无法正常工作.....您将其传递给采用 DbConnection 的基本 DbContext 构造函数之一
实际连接字符串(从 EF 生成):
<add name="DataContext" connectionString="metadata=res://*/EFModel.csdl|res://*/EFModel.ssdl|res://*/EFModel.msl;provider=System.Data.SqlClient;provider connection string="data source=localhost\sqlexpress;initial catalog=SampleQrCodes;user id=sa;password=***;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
这里有类似的问题Load Connection String from Config File in Azure Functions,但它不适合我如何通过数据库优先方法在local.settings.json
中定义此连接字符串?
【问题讨论】:
【参考方案1】:根据你的描述,这里是类似的 git hub issue。根据我的测试,您可以在 local.settings.json 文件中配置连接字符串,如下所示:
"IsEncrypted": false,
"Values":
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>",
"AzureWebJobsDashboard": "DefaultEndpointsProtocol=https;AccountName=<account-name>;AccountKey=<account-key>"
,
"ConnectionStrings":
"DataContext":
"ConnectionString": "metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string='data source=<server-name>.database.windows.net;initial catalog=<database-name>;persist security info=True;user id=<username>;password=<password>;MultipleActiveResultSets=True;App=EntityFramework'",
"ProviderName": "System.Data.EntityClient"
为了部署到您的 azure 函数,您可能需要修改 DbContext。更多详情,可以参考这个类似的issue。
【讨论】:
以上是关于带有数据库的 Azure 函数连接字符串 使用实体框架的第一种方法的主要内容,如果未能解决你的问题,请参考以下文章
Azure 函数队列触发器。连接字符串中可能的错误绑定配置?