在应用程序配置文件中找不到名为“MyApplicationEntities”的连接字符串

Posted

技术标签:

【中文标题】在应用程序配置文件中找不到名为“MyApplicationEntities”的连接字符串【英文标题】:No connection string named 'MyApplicationEntities' could be found in the application config file 【发布时间】:2012-06-14 05:38:15 【问题描述】:

我只是安装 EF 4.3 并尝试通过迁移升级我的项目。但是我在尝试通过包管理器控制台对我的项目执行add-migration initial 时遇到问题。

它现在抛出任何异常No connection string named 'MyApplicationEntities' could be found in the application config file.

现在我的配置已经全部完成了

<connectionStrings>
<add name="MyApplicationEntities" 
     connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost;initial catalog=MyApplicationEntitiesDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />

我不确定问题是什么,是 EF 4.3 中的错误还是我做的不对。

我认为this post 已经解决了这个问题,但还没有完全解决。

任何人都得到了答案。

欣赏 Sanj。

【问题讨论】:

No connection string named 'MyEntities' could be found in the application config file的可能重复 【参考方案1】:

啊,无意中发现了这个。

我不得不删除

public MasterEntities()
    : base("name=MyApplicationEntities")
    //      ^^^^^


public MasterEntities()
    : base("MyApplicationEntities")


EF 4.3 不喜欢调用连接字符串name=xxxxx

【讨论】:

您的 web.config 或 app.config 中是否有具有相应名称的连接字符串?这是我最初犯的一个常见错误,因为我的上下文对象位于不同的 DLL 中,连接信息不会自动复制到主项目。 这不会像你想的那样工作。如果您删除“名称=”部分,它将使用该名称创建一个数据库:) 这可能不是任何人都在寻找的解决方案——以这种方式使用“name=”是您表示您正在执行数据库优先的方式,而删除它会发出代码信号-first 并且很有可能抛出 UnintentionalCodeFirstException。 在 EF 6.0 中也有帮助 - 没有找到更好的东西。 请不要应用此更改。这不是一个正确的解决方案。正如 bwerks 提到的那样,我有一个“UnintentionalcodefirstException”。【参考方案2】:

Sanj 指出的解决方案是,您需要将连接字符串从数据库项目的 App.config 复制到 Web 项目的 web.config。我不确定为什么上述答案被标记为正确。我将此添加为答案而不是评论,以便未来的读者会发现这一点。

【讨论】:

我知道这是可行的,但我有一个类库项目并且没有配置文件 我的帖子适用于网络应用程序,但也许此链接会对您有所帮助。 youtube.com/watch?v=rYK0B1CQUN8 如果您创建了数据类并选择不将配置存储在配置文件中,则可能需要在类中添加信息。 谢谢!可能为我节省了 2 年 35 分钟的愚蠢研究! 【参考方案3】:

我遇到了同样的错误,但我已经有一个带有正确连接字符串名称和正确声明的 DbContext 的 web.config 文件。但是,我注意到当我使用 -Verbose 运行 add-migration 时,它会将“启动项目”声明为与包含我的上下文的项目不同的项目。所以我更改了启动项目,重新运行了添加迁移,一切正常!!

【讨论】:

在 EF 6.0 上运行时,此解决方案对我有用。这是我发现的另一个页面,它提供了更多上下文:entityframework.codeplex.com/workitem/974 为我工作!谢谢 谢谢 -- 另外,在将其设置为启动项目后,如果您已将其设置为部分配置状态,则可能需要使用 -force 参数运行 Enable-Migrations。请记住首先备份 Migrations 文件夹中的所有代码,因为它会被擦除。努力学习,感谢上帝的源代码控制。 这对我有用。我不敢相信我忽略了这一点 我也有类似的问题。读完后,我意识到我在做一些测试时选择了解决方案中的另一个项目作为启动项目。【参考方案4】:

确保您的 statup 项目配置文件有连接字符串。这个link 可以帮助您。

【讨论】:

链接往往会发生变化或丢失,您能否解释一些内容或在此处引用它? 只需检查您的启动项目配置文件是否有连接字符串。可能的情况是当您将 edmx 文件放在类库项目中并在不同的项目中引用它时。因此项目设置为启动应该有连接字符串。 啊!谢谢@SantoshPanigrahy。另一个重大的微软错误【参考方案5】:

我也遇到了这个问题,解决了

    选择正确的StartUp project。 在包管理器控制台上重新运行命令。

事情按预期进行。

【讨论】:

【参考方案6】:

我也遇到了类似的异常。 AppConfig 最初是在我们生成实体模型的项目中创建的。 但是如果您正在使用其他项目执行应用程序(我的解决方案中有多个项目),则需要将 AppConfig 包含在正在执行的项目中。

【讨论】:

【参考方案7】:
 1. ctor => Context

   public MasterEntities()
    : base("ConnectionStringName")



 2. config file

   <add name="ConnectionStringName"
      connectionString="Data Source=.;Initial Catalog=DatabaseName;User Id=sa; Password=YourPass;"
      providerName ="System.Data.SqlClient" />

 3. in Sulation Exporer right click the project and select 'Set as
    startup project'

 4. in PackageManagerConsole Change Default Project to Your Project of
    context class.

 5. then:

add-migration new

或将 ConnectionString 添加到工作项目的配置文件中。

【讨论】:

设置为启动项目帮助了我!谢谢!【参考方案8】:

就我而言,我有两个项目:

我只需要将连接字符串从 DAL App.Config 项目复制到 WPF App.Config 项目

【讨论】:

【参考方案9】:

对于因为在 Visual Studio 中使用 WPF 时遇到此错误而到达这里的任何人,看看这篇文章: Does MVVM stop the ability for the Visual Studio Designer to show xaml?

【讨论】:

以上是关于在应用程序配置文件中找不到名为“MyApplicationEntities”的连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

发生了错误。 : 在应用程序配置文件中找不到名为“EmployeeDBEntities”的连接字符串

在应用程序配置文件中找不到名为“x”的连接字符串......但它有效吗?

EF在应用程序配置文件中找不到名为“XXX”的连接字符串。

.NET的EF框架中:在应用程序配置文件中找不到名为“”的连接字符串问题

DB First,ASP Net Core 2.1,EF6:InvalidOperationException:在应用程序配置文件中找不到名为“DataContext”的连接字符串

在应用程序文件中找不到名为“...实体”的连接字符串,但它存在吗?