我正在使用 EF 并从中生成 .EDMX,但后来我只希望它用于自动生成类文件。
然后,我使用类文件创建实体模型,然后创建数据库上下文,然后创建存储库。我正在调用 WebApi(位于单独的项目但相同的解决方案中)来访问存储库以获取数据。当我运行 WebApi 时,我收到错误,
{“在应用程序配置文件中找不到名为“DBEntities”的连接字符串。”}
但是在我的 DAL 中,我有一个 webConfig 并且具有以下条目,所以我不太确定出了什么问题,
add name="DBEntities" connectionString="metadata=res://*/Models.DBModel.csdl|res://*/Models.DBModel.ssdl|res://*/Models.DBModel.msl;provider=System.Data.SqlClient;provider connection string="data source=MY-PC;initial catalog=DB;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient"
在 DBContext 文件中,删除
public RaficaDB()
: base("name=DefaultConnection"){}
到
public RaficaDB()
: base("DefaultConnection"){}
EF 4.3、EF 5 和 EF 6 不喜欢连接字符串被称为 name=xxxxx
在这里找到答案 -> 在应用程序配置文件中找不到名为“MyApplicationEntities”的连接字符串
你说“在我的 DAL 中,我有一个 webConfig”。我猜想连接字符串位于引用的类库的配置文件中,但不在您的入门项目(一个Web api项目,我想查看标签)中的主配置文件中。
如果是,只需复制入口项目配置文件中的连接字符串即可。
在 .edmx 文件所在的同一项目的 .config 文件的配置部分中插入以下部分。
您还可以在主项目的.config文件中为不同的环境创建不同的连接字符串,并将任何连接字符串作为DBContext构造函数的参数传递。
<connectionStrings>
<add name="DBEntities" connectionString="metadata=res://*/Models.DBModel.csdl|res://*/Models.DBModel.ssdl|res://*/Models.DBModel.msl;provider=System.Data.SqlClient;provider connection string="data source=MY-PC;initial catalog=DB;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
将项目设置为启动项目对我有用
我发现这有效:
1) 检查您是否有多个“App.config”文件。 2)检查是否有比它必须使用的连接字符串错误的名称。 3)保存项目并运行程序
现在应该可以工作了。
将连接字符串复制并粘贴到您的 WEBAPI 项目 web.config 文件中即可解决该问题。
这很愚蠢,但我遇到了这个错误,已被
Rebuild All
!!如果上述方法都不能解决问题,那么您可能犯了我犯过的错误,这是我的情况: 我的解决方案中有多个项目,并且启动项目与具有实体框架的项目不同,从包管理器控制台切换项目似乎是一件有问题的事情,尤其是在实体框架命令中,所以我做了以下事情:
如果上述方法不起作用,请尝试关闭解决方案并从步骤 2 开始尝试,这应该可以解决问题。
最简单的解决方案:
删除app.config中当前的edmx文件和相关连接字符串 并再次添加与之前名称相同的 Edmx 项目。
这对我有用。
仔细检查您的 /bin/ 文件夹,以确保您构建的应用程序的配置(例如 Foo.exe.config)具有您期望的连接字符串。
如果它缺失,但存在于您的 App.config 中,则在解决方案资源管理器中,检查该 App.config 文件的属性。确保“复制到输出目录”不是“不复制”。例如,尝试 “始终复制”。然后重建。
如果您从其他项目复制 App.config 文件,这可能会被意外设置为“不复制”。