2016-11-13 53 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" /> 

连接字符串

相关问题