2016-11-13 49 views
1

我有ASP.Net MVC網站。'System.Data.Entity.Migrations.DbMigrationsConfiguration`1的類型初始值設定項引發異常

技術堆棧

  • ASP.Net 4.6
  • C#.NET
  • EF 6
  • MySQL的 - 數據庫

雖然我試圖以使用Nuget命令從數據庫: -

Enable-Migrations -force 

我得到下面的異常

的類型初始爲「System.Data.Entity.Migrations.DbMigrationsConfiguration`1」引發了異常。

下面的東西都已經交叉檢查&由我試過: -

我App.Config中: -

<connectionStrings> 
<add name="mydbContext" providerName="MySql.Data.MySqlClient" connectionString="Server=localhost;port=8080;database=mydb;uid=root;password=" /> 
</connectionStrings> 



<entityFramework> 
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" /> 
<providers> 
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider> 
</providers> 

+0

什麼是您的堆棧跟蹤的其餘部分看起來像上面?而你的配置元素與EF有關? – rene

+0

@rene我在Nuget Package Manager Console中得到這個錯誤 –

+0

@rene在帖子中添加了其餘的配置元素 –

回答

2

此配置爲我工作:

<?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" /> 
    </configSections> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> 
    </startup> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
     <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider> 
    </providers> 
    </entityFramework> 
    <system.data> 
    <DbProviderFactories> 
     <remove invariant="MySql.Data.MySqlClient" /> 
     <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
    </DbProviderFactories> 
    </system.data> 
    <connectionStrings> 
    <add name="MyLocalDatabase" providerName="MySql.Data.MySqlClient" connectionString="server=localhost;port=3306;database=mycontext;uid=root;password=********" /> 
    </connectionStrings> 
</configuration> 

我得到,因爲一個錯誤的安裝MySql連接器的與你類似的錯誤客戶端在我的開發機器上。我在Visual Studio中安裝了MySql連接器Nuget包,但這還不夠。我還需要安裝我從MySql網站下載的MySql客戶端。之後,Type錯誤消失了。

這些都是我的NuGet包: enter image description here

這是the download page of MySql connector我下載並手動安裝。

注意:如果明確指定提供者的類型,則從不使用defaultConnectionFactory值。在這種情況下,在此設置中,您在配置文件中擁有哪個值並不重要。請參閱this reference doc page in MySql website中的第3點。

我建議您使用MySql命令行客戶端控制檯檢查您的MySql是否已正確安裝在您的機器中。嘗試使用連接字符串值從Visual Studio外部連接到服務器。

+0

步驟1 >>'安裝包MySQL.Data.Entities' 步驟2 >>'安裝包MySql.Data.Entity -Version 6.8.8' 步驟3 >>'Install-Package MySql.Data - 版本6.8.8' –

+0

但是仍然是相同的錯誤 –

+0

我沒有安裝那些你說的軟件包,我安裝了我在screencap中顯示的軟件包:在Visual Studio的「管理Nuget軟件包」嚮導中,我選擇了包MySql.ConnectorNET。實體,另一個包作爲這個的依賴來安裝。之後,我手動安裝了Visual Studio外部的MySql連接器。直到我做了最後一步之前,我都遇到了同樣的錯誤。 – Diana

0

發生類型初始化錯誤的原因是invariantName=MySql.Data.MySqlClientweb.config文件的<providers>部分中出現兩次。

刪除其中一個(由註釋掉它)解決了這個問題:

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
    <providers> 
     <!--<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />--> 
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider> 
    </providers> 
</entityFramework> 
0

當我有這個問題,我意識到的EntityFramework沒有在配置文件中聲明。

所以我添加

<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 

連接字符串

相關問題