Firebird EF6 DDEX VS2013 Обновление сообщества 4 Ошибка динамического SQL

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

Я настроил провайдера DDEX и провайдера EF6 для VS2013, а также свой проект. Я пытаюсь создать EDM для базы данных. У меня есть эта ошибка при запуске мастера Entity Data Model Wizard в Visual Studio:

Произошла ошибка при подключении к базе данных. База данных может быть недоступна. Возникла исключительная ситуация типа "System.Data.Entity.Core.EntityCommandExecutionException". Сообщение об ошибке: "Произошла ошибка при выполнении определения команды. Смотрите внутреннее исключение для деталей. Обнаружено внутреннее исключение типа "FirebirdSql.Data.FirebirdClient.FbException" с таким сообщением об ошибке: "Ошибка ошибки SQL динамического SQL = -104 Токен неизвестен - строка 6, столбец 8 SELECT". Обнаружено внутреннее исключение типа "FirebirdSql.Data.Common.IscException", с этим сообщением об ошибке: "Ошибка SQL-ошибки динамического SQL-кода = -104 Токен неизвестен - строка 6, столбец 8 SELECT".

Вот мой app.config:

<?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>
  <entityFramework>
    <defaultConnectionFactory type="FirebirdSql.Data.EntityFramework6.FbConnectionFactory, EntityFramework.Firebird" />
    <providers>
      <provider invariantName="FirebirdSql.Data.FirebirdClient" type="FirebirdSql.Data.EntityFramework6.FbProviderServices, EntityFramework.Firebird" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="FirebirdSql.Data.FirebirdClient" />
      <add name="FirebirdClient Data Provider" invariant="FirebirdSql.Data.FirebirdClient" description=".NET Framework Data Provider for Firebird" type="FirebirdSql.Data.FirebirdClient.FirebirdClientFactory, FirebirdSql.Data.FirebirdClient" />
    </DbProviderFactories>
  </system.data>
</configuration>

Вот соответствующий раздел моего machine.comfig:

<system.data>
    <DbProviderFactories>
        <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
        <add name="FirebirdClient Data Provider" invariant="FirebirdSql.Data.FirebirdClient" description=".NET Framework Data Provider for Firebird" type="FirebirdSql.Data.FirebirdClient.FirebirdClientFactory, FirebirdSql.Data.FirebirdClient, Version=4.6.0.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c" />
    </DbProviderFactories>
</system.data>

Я использую DDEXProvider-3.0.1.0, и оба его dll DataTools загружаются в GAC.

Я использую EntityFramework.Firebird-4.6.0.0-NET45, и DLL, FirebirdSql.Data.FirebirdClient находится в GAC.

Я использую Entity Framework 6.1.2 в своем решении от NuGet. (Первоначально я использовал 6.0, но я получил ту же ошибку.)

Я использую поставщик данных Firebird ADO.NET в своем решении 4.6.0.0 от NuGet.

Я использую Firebird Entity Framework Provider 4.6.0.0 в своем решении от NuGet.

Мои тесты подключения к данным в порядке, и он использует Dialect 3 для связи с базой данных. Я экспериментировал с Диалектом 1, но это не решает проблему. В настоящее время я использую "нет" для набора символов.

В обозревателе серверов я могу просматривать все папки: домены, системные таблицы, таблицы, представления и хранимые процедуры без ошибок.

На мой взгляд, код ошибки говорит о том, что базе данных Firebird не нравится "." в столбце 8 команды. У кого-нибудь есть решение для этого? Кто-нибудь вообще сталкивался с этой проблемой?

1 ответ

Решение

Firebird версии 1.5 слишком устарел для использования с Entity Framework. Используйте gbak для создания переносимого файла резервной копии (fbk) вашей базы данных, обновите сервер Firebird до версии 2.5.3 и снова запустите gbak для восстановления базы данных. Теперь EF должен работать на вас.

Другие вопросы по тегам