我使用EF并从中生成.EDMX,但后来我只希望它用于自动生成类文件。
然后,我使用类文件创建实体模型,然后创建数据库上下文,然后创建存储库。我正在调用WebApi(在一个单独的项目中,但是在相同的解决方案中)来访问存储库以获取GET数据。当我运行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"
答案 0 :(得分:38)
在DBContext文件中,删除
public RaficaDB()
: base("name=DefaultConnection"){}
到
public RaficaDB()
: base("DefaultConnection"){}
EF 4.3,EF 5和EF 6不喜欢名为name = xxxxx
的连接字符串在此处找到答案 - > No connection string named 'MyApplicationEntities' could be found in the application config file
答案 1 :(得分:13)
你说“在我的DAL中,我有一个webConfig”。我猜连接字符串在引用的类库的配置文件中,但不在您的条目项目中的主配置文件中(web api项目,我想看标签)。
如果是这样,只需复制条目项目配置文件中的连接字符串。
答案 2 :(得分:1)
在.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>
&#13;
答案 3 :(得分:1)
我发现这很有效:
1)检查是否有多个“App.config”文件。 2)检查名称是否与其必须使用的连接字符串的名称相同。 3)保存项目并运行程序
现在应该可以了。
答案 4 :(得分:1)
如果以上方法均不能解决问题,则可能是您犯了我的错误,这是我的情况: 我的解决方案中有多个项目,而启动项目不同于具有实体框架的项目,因此从程序包管理器控制台切换项目似乎是一件有问题的事情,尤其是在实体框架命令中,所以在这里我做了什么:
如果上述方法无效,请尝试关闭解决方案并从步骤2开始尝试,这应该可以解决问题。
答案 5 :(得分:0)
最简单的解决方案:
删除app.config中的当前edmx文件和相关连接字符串 并添加与之前相同名称的Edmx项目。
这对我有用。
答案 6 :(得分:0)
将连接字符串复制并粘贴到WEBAPI Project web.config文件将解决问题。
答案 7 :(得分:0)
这很愚蠢,但是我遇到了一个由Rebuild All
修复的错误!!
可能还要将其关闭然后再打开。...
答案 8 :(得分:0)
将项目设置为Startup项目对我有用