繁体   English   中英

数据库优先 EF 和 ASP.NET Core 3 Web API 在 Azure 上发布,连接字符串错误

[英]Database first EF and ASP.NET Core 3 Web API published on Azure, connection string error

我正在使用数据库首先生成的 db 上下文开发 ASP.NET Core 3 Web API。 我在 appsettings.json 文件中有连接字符串。

当我在 IIS Express 上本地运行它时,一切都很好。

问题是当我在 Azure 上发布它时,它给了我错误:

System.ArgumentException: Keyword not supported: 'data source'.
[...]

我注意到连接字符串在发布时从:

metadata=res://*/DTOs.csdl|res://*/DTOs.ssdl|res://*/DTOs.msl;provider=System.Data.SqlClient;provider connection string='data source=*****;initial catalog=*****;persist security info=True;user id=*****;password=*****;MultipleActiveResultSets=True;App=EntityFramework'",

到:

metadata=res://*/DTOs.csdl|res://*/DTOs.ssdl|res://*/DTOs.msl;provider=System.Data.SqlClient;provider connection string="data source=*****;initial catalog=*****;persist security info=True;user id=*****;password=*****;MultipleActiveResultSets=True;App=EntityFramework""

作为一种解决方法,我改变了路线

services.AddScoped<palmdtos>(_ => new MyDbContext(Configuration.GetConnectionString("myConnectionString")));

services.AddScoped<palmdtos>(_ => new MyDbContext(Configuration.GetConnectionString("myConnectionString").Replace("&quot;","'").Replace("&amp;", "&")));

有没有更好的方法来做到这一点?

使用 EF 设计器创建的模型与 Code First 的不同之处在于您的模型已经存在,并且不是在应用程序运行时通过代码生成的。 该模型通常作为项目中的 EDMX 文件存在。

设计器会将 EF 连接字符串添加到您的 app.config 或 web.config 文件中。 此连接字符串的特殊之处在于它包含有关如何在 EDMX 文件中查找信息的信息。

参考这篇文章

原因是我们使用的其中一个 EDMX 文件的连接字符串。 由于 EDMX 必须是只读的,我们必须在 Azure 中使用不同的连接字符串。

当替换&quote ; 通过单引号' ,它将再次正常工作。 因此,转到 azure 网站 > Configuration > Connection strings > 添加custom类型的 conn 字符串。

注意:即使数据库在 Azure 上运行,也要SQLAzure为实体框架连接字符串选择Custom而不是SQLAzure

您可以尝试更新设置吗?

在 Azure 面板中:

Select App -> Application Settings -> Enter new Connection String -> Save

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM