【发布时间】:2017-01-26 03:50:38
【问题描述】:
我有一个使用实体框架核心的 .net 核心应用程序。通过命令行运行实体框架迁移或更新时,我得到一个“值不能为空。参数名称:connectionString”
连接字符串作为环境变量保存:
ConnectionStrings__SomeContextConnection ...(localdb)\\MSSQLLocalDB...
但是,当我将完全相同的连接字符串移动到 .json 配置文件中时:
"ConnectionStrings": {
"SomeContextConnection": "...(localdb)\\MSSQLLocalDB..."
}
然后实体框架工具可以毫无问题地识别连接字符串。 调试代码时,在Startup.cs中:
var connectionString = _config.GetConnectionString("SomeContextConnection");
当字符串存储在两个位置的任何一个中时,connectionString 变量被设置为正确的字符串,但在使用环境变量时尝试连接到数据库时它会崩溃。
(注意:在环境变量的情况下,连接字符串被转义,所以从
(localdb)\\MSSQLLocalDB...
到
(localdb)\\\\MSSQLLocalDB...
但即使删除多余的反斜杠,问题仍然存在)
更新: 当连接字符串被移动到 Windows 级别的环境变量中时,它可以正常工作。似乎只有在使用 Visual Studio 环境变量时才会出现问题。
【问题讨论】:
-
试着加一个反斜杠
-
那是我在上面的“注释”中提到的,但没有帮助。
-
我认为它与 Project.Json 有关,请检查您是否在启动应用程序或数据库层中有注释行(如果有的话)。 JSON 文件中不能有任何注释行
-
我把所有的cmet都去掉了,以后可能会出问题,但是这个问题没有解决。
标签: c# asp.net entity-framework asp.net-core entity-framework-core