我有一個ASP.NET應用程序,我想上傳到提供MySQL數據庫的主機。我使用的是Visual Studio 2012,.NET 4.5,Entity Framework 5.0,並且我已經爲Visual Studio 1.0.2安裝了MySQL。我一直在試圖連接到本地的MySQL服務器,但我遇到了一些問題。ASP.NET MVC 4和實體框架5.0中的MySQL連接 - 多個DbProviderFactory
起初,我在我的項目中引用了版本爲6.6.5.0的MySql.Data
和MySql.Data.Entity
。但是,當我試圖做Update-Database
在包管理器控制檯,我得到了以下錯誤:
System.DateTime System.Data.Entity.Migrations.Model.InsertHistoryOperation.get_CreatedOn()
這seems要與實體框架5.0和更早版本的連接器/ .NET的一個問題 - MySQL的連接器,用於視覺工作室。由於該過程是發現過程之一,所以我不記得我的項目是如何參考MySql.Data
和MySql.Data.Entity
版本6.6.5.0的。
我刪除了引用,然後使用NuGet下載並引用版本6.7.4.0中的相同程序集。這解決了我之前得到了錯誤,但現在Update-Database
給了我以下錯誤:
Could not load file or assembly 'MySql.Data, Version=6.6.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies.
The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
我已經包括特定DbProviderFactory
在我的web.config文件中解決了這個問題:
<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.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
如果我離開了remove
標籤,我得到錯誤:
Column 'InvariantName' is constrained to be unique. Value 'MySql.Data.MySqlClient' is already present.
我認爲這意味着,不知我的項目還是有DbProviderFactory
提供MySQL庫的6.6.5.0版本。但是當我搜索我的項目的文本文件時,我無法在任何地方找到字符串6.6.5.0
。
目前這個解決方案讓我連接到我的本地MySQL服務器,但是當我將項目發佈到我的託管服務提供商並轉到我的瀏覽器中的網站時,我只是收到一條錯誤消息。我想知道如何刪除隱含的6.6.5.0-serving DbProviderFactory
,這兩者都是我學習的一部分,因爲我認爲我的解決方法可能是我的網站無法在託管提供商處工作的原因。
作爲尋求解決辦法的一個線索,我覺得很可疑,當我嘗試添加一個參考,我只看到(幾個版本)6.6.5.0:
但是,當我去的NuGet經理,我只有版本6.7.4.0安裝:
希望這有助於。