无法使用连接字符串名称运行支架 dbcontext

Posted

技术标签:

【中文标题】无法使用连接字符串名称运行支架 dbcontext【英文标题】:Unable to get scaffold-dbcontext to run using connection string name 【发布时间】:2021-05-26 08:51:49 【问题描述】:

我有一个数据库上下文,我正在尝试使用数据库脚手架进行更新。 我在包管理器控制台中使用的命令是:

Scaffold-DbContext Name="pwa_db" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Data -Force

我的 appsettings.json 看起来像这样:

"ConnectionStrings": 
  "pwa_db": "Server=[My Server];Database=[My DB];Trusted_Connection=True;MultipleActiveResultSets=true"

但是当我运行命令时,我得到了这个错误:

"A named connection string was used, but the name 'pwa_db' was not found in the application's configuration. Note that named connection strings are only supported when using 'IConfiguration' and a service provider, such as in a typical ASP.NET Core application. See https://go.microsoft.com/fwlink/?linkid=850912 for more information."

奇怪的是,这个上下文是使用这个命令生成的,所以我不确定为什么它现在会停止工作。 我可以通过在命令中使用完整的连接字符串而不是命名连接来轻松解决这个问题,但是随后使用我希望避免的连接字符串生成数据库上下文,因为您总是会收到这样的警告:

#warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see http://go.microsoft.com/fwlink/?LinkId=723263.

我并不担心警告本身,因为我使用的是受信任的连接,因此没有存储任何凭据,而且我不希望消息来源离开我们的办公室。

谁能告诉我可能需要查看哪些其他配置位或可能存在哪些其他问题?因为我看不出任何消息中链接的文档出了什么问题。

【问题讨论】:

我也有同样的问题... 【参考方案1】:

您是否也尝试将连接字符串添加到 appsettings.development.json 文件中?

【讨论】:

感谢您的建议,但复制到那里后仍然无法正常工作。

以上是关于无法使用连接字符串名称运行支架 dbcontext的主要内容,如果未能解决你的问题,请参考以下文章

无法创建“[DBContext 的名称]”类型的对象。对于设计时支持的不同模式[关闭]

实体框架 MySQL DbContext 无法连接

如何动态更改EF的DBContext的连接字符串

实体框架代码首先忽略连接字符串,而不是使用IIS

如何动态更改EF的DBContext的连接字符串

将连接字符串传递给代码优先的 DbContext