移行を有効にしようとしていますが、例外がスローされています:
コンテキストが既存のデータベースをターゲットにしているかどうかを確認しています... System.TypeInitializationException: 'System.Data.Entity.Migrations.DbMigrationsConfiguration`1'の型初期化子が例外をスローしました。 ---> System.TypeInitializationException: 'System.Data.Entity.Internal.AppConfig'の型初期化子が例外をスローしました。 ---> System.Configuration.ConfigurationErrorsException:構成システムの初期化に失敗しました---> System.Configuration.ConfigurationErrorsException: 'name'属性は 'section'タグで指定する必要があります。
App.configファイルが正しくセットアップされていないと想定しています(EFパッケージを追加したときに自動的にセットアップされました)。接続文字列を追加するだけでした:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section Name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 --></configSections>
<connectionStrings>
<add Name="MyContext" connectionString="data source=MYSERVER;initial catalog=CodeFirstTest;user id=***;password=***;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
SQL Server 2008 R2を使用しています。
接続文字列があるので、defaultconnectionfactoryが必要だとは思わない。私は正しいですか? (注:このセクションがなくても、同じ例外が発生します)
私は他に何が欠けていますか?
<connectionString />
エントリが<configuration>
の直後のWeb.configの上部にある場合、同じ問題が発生しました。それから</configuration>
の直前に動かしてみましたが、うまくいきました。
これは主に設定ファイルを使用することです。したがって、実際に役立つスタックトレースは「System.Configuration.ConfigurationErrorsException」です。多くの理由がある可能性がありますが、それらはすべて、以前に回答したように、構成ファイルに主に修正が含まれています。これとは少し異なる可能性のいくつかを以下に示します(しかし、スタックは本当に教えてくれます)
私は同じ問題に会った。私の問題は、Web.configファイルに二重の接続文字列があることです。以下のように:
<add name="DB1234" ..../> <add name="DB1234" ..../>
したがって、まずweb.configファイルを確認する必要があります。幸運を!
私の場合、DevExpress MVCで生成されたテンプレートを使用して、web.configの<sectionGroup name="devExpress">...<sectionGroup/>
の後に追加の行を追加する必要があります
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
あなたの 'connectionString'のスペルをチェックして、それが 'connectionStrings'であることを確認してください。 「s」を追加した後、それはそれを解決しました。
私の場合、ソリューションに複数のプロジェクトがあり、別のプロジェクトがスタートアッププロジェクトとして設定されました。スタートアッププロジェクトが解決したときに、移行を有効にしようとしていたプロジェクトを設定しました。
@Lester回答のようにWeb設定をチェックします。次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
...
</configSections>
<appSettings>
...
</appSettings>
...
<configuration>
私の経験では、たとえば、データベースとの接続を確立するために使用されるすべての情報は、startup-projectにある設定ファイルからのものであり、私がいるプロジェクトにあるものではないということですenable-migrationsまたはupdate-database命令の生成または使用、例iプロジェクトPRINCIPALおよび別のプロジェクトDATAがありますPRINCIPALのものです。
これを<configSections>
に含めます
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
私の場合、Visual Studioの2つのインスタンスを開いていると、この行は省略されます。このエラーを回避するには、Visual Studioのすべてのインスタンスを閉じ、インターフェイスNugetまたはコンソールを介してEFを開いて再インストールします
Webconfigを確認します。たとえば、次のようなアプリ設定がありました。
<configuration>
<appSettings>
<add key="dhx_license" value="value"/>
</appSetting>
.....
そしてそのエラーを投げました。しかし、その後、appSettingが下に複製されていることに気づいたので移動し、エラーは消えました。ありがとう。