Как установить абсолютный путь для сборки, содержащей соединитель базы данных?MySQL, Connector 6.4.3 с Entity Framework 4.1 - PullRequest
1 голос
/ 01 августа 2011

Причина: http://bugs.mysql.com/bug.php?id=61933

Я перекомпилировал коннектор из источника, увеличил версию до 6.4.3.1, но теперь этот (возможно) банальный вопрос блокирует меня.

КакУстановить полное имя провайдера в строке подключения в app.config?У меня установлен официальный соединитель 6.4.3.

Я получаю ошибку, когда добавляю новую модель данных сущности и выбираю из существующей базы данных.Это я проследил до вышеуказанной связанной (глупой) ошибки.

Я не смог найти лучшего заголовка для этого вопроса.


Microsoft Visual Studio

Ошибкапроизошло при подключении к базе данных.База данных может быть недоступна.Возникла исключительная ситуация типа System.Data.ProviderIncompatibleException.Сообщение об ошибке: «Поставщик не возвратил строку ProviderManifestToken.

Произошло внутреннее исключение типа« System.FormatException », с этим сообщением об ошибке:« Входная строка была в неправильном формате. ». '.

OK


Решение

  1. Загрузите исходные коды MySQL Connector / 6.4.3 и распакуйте его.

  2. В проекте MySql.Data.Entity замените ...:

  3. (ProviderServices.cs: 188) С: double version = double.Parse (соединение.ServerVersion.Substring (0, 3), System.Globalization.CultureInfo.InvariantCulture);

  4. (ProviderManifest.cs: 73) С: double version = double.Parse (manifestToken, System.Globalization.CultureInfo.InvariantCulture);

  5. Создайте новый ключ знака и назовите его ConnectorNet (то же имя, что и в файле assemblyinfo.cs)

  6. Добавьте .1 к AssemblyVersion в AssemblyInfo.cs в проекте MySql.Data, этот файл 1 будет предоставленst: [Assembly: AssemblyVersion ("6.4.3.1")]

  7. Поместите Release в качестве целевой конфигурации, вы также можете отключить сборку проектов .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" />

Ответы [ 2 ]

1 голос
/ 01 августа 2011

Строка подключения не содержит путь к сборке провайдера.Имя провайдера строки подключения является только ссылкой на провайдера, зарегистрированного в 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.

0 голосов
/ 20 сентября 2011

Более простое решение: используйте официальный установщик 6.4.3.

Зайдите в ваши региональные настройки, измените десятичный разделитель с ',' на '.'et voilà.

Этого достаточно в ожидании отправки 6.4.4.

...