Code First无法启用迁移

我正在尝试启用迁移,但它正在抛出exception:

检查上下文是否以现有数据库为目标… System.TypeInitializationException:’System.Data.Entity.Migrations.DbMigrationsConfiguration`1’的类型初始值设定项引发exception。 —> System.TypeInitializationException:’System.Data.Entity.Internal.AppConfig’的类型初始值设定项引发了exception。 —> System.Configuration.ConfigurationErrorsException:配置系统初始化失败—> System.Configuration.ConfigurationErrorsException:必须在’section’标签上指定’name’属性。

我假设App.config文件没有正确设置(当我添加EF包时它自动设置)。 我所做的就是添加连接字符串:

   

我正在使用SQL Server 2008 R2。

因为我有一个连接字符串,我不相信我需要defaultconnectionfactory。 我对么? (注意:即使没有本节,我仍然会得到相同的例外)

我还缺少什么?

当我的条目位于Web.config的顶部时,在之后,我遇到了同样的问题。 然后我尝试在之前移动它,它起作用了。

这主要与配置文件有关。 所以实际的堆栈跟踪有助于“System.Configuration.ConfigurationErrorsException”。 可能有很多原因,但它们主要包括配置文件中的更正,如前所述。 下面给出了几个与此不同的可能性(但是堆栈确实告诉我们)

  1. 一个可能的原因可能是,启用迁移的项目可能与启动项目不同。 所以一定要将-StartUpProject添加到你的nuget命令中。
  2. 在两个不同项目的情况下,所使用的entity framework的版本可以是不同的。

我遇到了同样的问题。 我的问题是Web.config文件中有双连接字符串。 如下所示:

所以我们首先要检查我们的web.config文件! 祝好运!

在我的情况下,我在解决方案中有几个项目,另一个项目被设置为StartUp项目。 设置我尝试启用迁移的项目作为StartUp项目解决了它。

检查你的’connectionString’的拼写并确保它是’connectionStrings’我在我自己的情况下省略了’s’。 添加’s’后,解决了它。

在我的例子中,使用DevExpress MVC生成的模板,需要在web.config中的...之后添加额外的行...

 

在我的经验中,例如,用于与数据库建立连接的所有信息都来自启动项目中的配置文件,而不是项目中我所在的那个信息。生成或使用enable-migrations或update-database指令,例如我有项目PRINCIPAL和另一个项目DATA,我只在运行Packager控制台管理器中的包时使用DATA项目作为我的默认项目,但真正使用的配置文件是PRINCIPAL的那个。

将其包含在

 

在我的情况下,当我打开2个Visual Studio实例时,这行被省略。 关闭Visual Studio的所有实例,通过Nuget或Console接口打开并重新安装EF以避免此错误

检查webconfig,例如:我有这样的应用程序设置:

      ..... 

并抛出了那个错误。 但后来我意识到appSetting在下面重复,所以我移动了,错误消失了。 谢谢。

像@Lester一样回答检查web配置。 它必须如下所示:

    ...   ...  ...