簡體   English   中英

如何為包含數據庫連接器的程序集設置絕對路徑? 帶有實體框架4.1的MySQL Connector 6.4.3

[英]How do I set the absolute path for a assembly containing Database connector? MySQL Connector 6.4.3 with Entity Framework 4.1

原因: http : //bugs.mysql.com/bug.php?id=61933

我從源頭重新編譯了連接器,將tit的版本增加到6.4.3.1,但是現在(可能)這個瑣碎的問題阻止了我。

如何在app.config的連接字符串中設置完整的提供程序名稱? 我已經安裝了官方的6.4.3連接器。

我得到的錯誤是當我添加一個新的實體數據模型,並從一個現有的數據庫中進行選擇時。 我跟蹤到上面的鏈接(傻)錯誤。

對於這個問題,我找不到更好的標題。


Microsoft Visual Studio

連接到數據庫時發生錯誤。 該數據庫可能不可用。 發生類型為“ System.Data.ProviderIncompatibleException”的異常。 錯誤消息是:'提供程序未返回ProviderManifestToken字符串。

捕獲的內部異常的類型為“ System.FormatException”,並顯示以下錯誤消息:“輸入字符串的格式不正確。”。


  1. 下載MySQL Connector / 6.4.3源代碼並將其解壓縮。

  2. 在MySql.Data.Entity項目中,替換...:

  3. (ProviderServices.cs:188)使用:雙版本= double.Parse(connection.ServerVersion.Substring(0,3),System.Globalization.CultureInfo.InvariantCulture);

  4. (ProviderManifest.cs:73)使用:double版本= double.Parse(manifestToken,System.Globalization.CultureInfo.InvariantCulture);

  5. 創建一個新的符號密鑰並將其命名為ConnectorNet(與assemblyinfo.cs中的名稱相同)

  6. 在MySql.Data項目的AssemblyInfo.cs中的AssemblyVersion中添加.1,此1文件與其余文件共享:[assembly:AssemblyVersion(“ 6.4.3.1”)]

  7. 將“發布”作為目標配置,您也可以禁用.Tests項目。

  8. 以管理員身份使用gacutil安裝它們。 在這里,您還可以獲得公鑰令牌。

  9. 找到Machine.config,注意了解編譯項目要使用的.NET fx非常重要。

  10. 搜索DbProviderFactories,並注釋掉現有的MySQL數據提供程序,將其復制並替換為重復項,方法是在版本中添加.1和公用密鑰令牌。

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

<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.4.3.1, Culture=neutral, PublicKeyToken=XXXXXXXXXXXXXXX" />

連接字符串不包含提供程序集的路徑。 連接字符串的providerName僅引用在system.data\\DbProviderFactories注冊的提供者:

<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.4.3.1, Culture=neutral, PublicKeyToken=YourToken" />
</system.data>

工廠注冊的invariant是您在連接字符串的providerName中引用的內容。 您可以嘗試將新的連接器程序集放到您的應用程序目錄中,或者使用強烈的名稱將該程序集安裝到GAC。

更簡單的解決方案:使用官方的6.4.3安裝程序。

進入您的區域設置,將小數點分隔符從“,”更改為“。”。 等。

等待6.4.4發布就足夠了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM