[英]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(""","'").Replace("&", "&")));
有没有更好的方法来做到这一点?
使用 EF 设计器创建的模型与 Code First 的不同之处在于您的模型已经存在,并且不是在应用程序运行时通过代码生成的。 该模型通常作为项目中的 EDMX 文件存在。
设计器会将 EF 连接字符串添加到您的 app.config 或 web.config 文件中。 此连接字符串的特殊之处在于它包含有关如何在 EDMX 文件中查找信息的信息。
参考这篇文章。
原因是我们使用的其中一个 EDMX 文件的连接字符串。 由于 EDMX 必须是只读的,我们必须在 Azure 中使用不同的连接字符串。
当替换"e
; 通过单引号'
,它将再次正常工作。 因此,转到 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.