2014-03-03 130 views
8

我開發了一個Entity Framework 6項目,使用MySQL作爲數據庫。在我的Windows系統上,項目正在運行。現在我試圖在Linux機器上移動該項目。 爲了運行該項目,我將MySQL dll添加到GAC並進行機器配置。所有需要的DLL也位於項目文件夾中。當實體框架訪問數據庫,我收到以下錯誤:Mono Entity Framework 6 MySQL

System.Configuration.ConfigurationErrorsException: Failed to find or load the registered .Net Framework Data Provider. 
    at System.Data.Common.DbProviderFactories.GetFactory (System.Data.DataRow providerRow) [0x00000] in <filename unknown>:0 

<?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> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <connectionStrings> 
    <add name="CashDeskServerContext" providerName="MySql.Data.MySqlClient" connectionString="server=localhost; 
     port=3306;database=ServerContext;uid=root;password=password;Convert Zero Datetime=True"/> 
     <add name="AuditLogContext" providerName="MySql.Data.MySqlClient" connectionString="server=localhost; 
     port=3306;database=AuditLogContext;uid=root;password=password;Convert Zero Datetime=True"/> 
    </connectionStrings> 
    <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" /> 
    </providers> 
    </entityFramework> 
</configuration> 

任何想法?

THX 邁克爾

+0

我不確定Mono完全支持EF 6但一般來說這是一個配置問題或版本問題。你可以告訴我們你的App.Config來查看配置嗎? –

+0

嗨Alberto,我將app.config添加到我的問題中... – Michael

+0

請注意,您正在引用Mono中通常不支持的EntityFramework.SqlServer。刪除此零件,請 –

回答

7

這是因爲你似乎並不具備配置MySQL的ADO.NET提供者。看看我的blogpost關於在Mono上使用EF6和MySql,它說明了如何解決這個問題(請注意,我寫這篇文章是爲了發佈EF6版本,我在路上遇到的問題現在應該已經修復)。請注意,在這篇文章中,我使用了DevArt MySql提供程序,因此您必須找到用於提供商的正確條目。也看看這個stackoverflow後 - Custom .NET Data Providers - 它提供了註冊ADO.NET提供商的詳細信息(你最感興趣的是DbProviderFactories部分,因爲這是你所缺少的)

+0

謝謝帕維爾。我錯過了將屬性添加到我的上下文中。我解決了這個問題,現在我得到了以下錯誤:System.InvalidOperationException:表'Table'的已配置列順序包含重複項。確保指定的列順序值是不同的。 – Michael

+0

這是一個不同的問題 - 開始一個新的線程與更多的細節。我只能懷疑你在同一張表上使用了多個具有相同Index值的'Column'屬性。 – Pawel

相關問題