2014-02-22 47 views
9

我收到以下錯誤Enity框架,MySQL的

「的實體框架提供型‘MySql.Data.MySqlClient.MySqlProviderServices,MySql.Data.Entity’在ADO.NET提供程序的應用程序配置文件中註冊使用不變的名稱'MySql.Data.MySqlClient'無法加載,請確保使用程序集限定名稱,程序集可用於正在運行的應用程序,有關詳細信息,請參見http://go.microsoft.com/fwlink/?LinkId=260882

但是我有MySql.Data.dll和MySql.Data.Entity.dll也是在我的項目MySql.Data.Entity.EF6.dll引用(來自MySQL連接網絡6.8.3)

這裏是我的App.conf

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
</configSections> 
<connectionStrings> 
    <add name="inspectm_inspectContext" connectionString="server=--user id=--;password=--;database=--;persistsecurityinfo=True" providerName="MySql.Data.MySqlClient" /> 
    </connectionStrings> 
<system.data> 
    <DbProviderFactories> 
    <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.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
    </DbProviderFactories> 
</system.data> 
<entityFramework> 
<defaultConnectionFactory type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" /> 
<providers> 
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity" /> 
</providers> 
</entityFramework> 
</configuration> 

回答

7
<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <connectionStrings> 
    <add name="inspectm_inspectContext" connectionString="server=--;user id=--;password=--;database=--;persistsecurityinfo=True" providerName="MySql.Data.MySqlClient" /> 
    </connectionStrings> 
    <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> 
</configuration> 

我的完整App.conf這個工作對我來說

首先我刪除

<DbProviderFactories> 
<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.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 
</DbProviderFactories> 

然後,我改變

,並添加提供商

<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider> 
+2

您可以添加一些關於更改內容的註釋嗎? – Kye

3

的人面臨同樣的問題,這裏是導致異常的行是這樣的

<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity" /> 

只需追加.EF6到MySql.Data.Entity這樣的提供者是這樣的

<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> 

因爲您選擇刪除內部的代碼並沒有幫助解決問題。我希望這可以幫助別人。

1

你也可以做到以下幾點

[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))] 
public class DemoContext : DbContext{} 
{ 
0

檢查內部異常。

我得到

「{」 按類型違反繼承安全規則: 'MySql.Data.Entity.MySqlEFConfiguration'。派生類型必須要麼 匹配基本類型的安全接入或更少 訪問。「:」 MySql.Data.Entity.MySqlEFConfiguration「}」

指向我: Inheritance security rules violated by type: 'MySql.Data.Entity.MySqlEFConfiguration'

我真的不想降級。但到目前爲止,我還沒有找到更好的答案。