2016-02-09 7 views
1

Я пытаюсь выполнить работу с Entity Framework 5 на SQLite (http://brice-lambson.blogspot.ru/2012/10/entity-framework-on-sqlite.html). Я установил SQLite и EF6. Однако я получил ошибку:Как сочетаются SQLite и Entity Framework 6

'Instance' элемент типа поставщика Entity Framework «System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version = 1.0.99.0, культура = нейтральной, PublicKeyToken = db937bc2d44ff139 'не возвращал объект, который наследуется от «System.Data.Entity.Core.Common.DbProviderServices». Поставщики Entity Framework должны наследовать от этого класса, а член «Экземпляр» должен вернуть экземпляр singleton поставщика. Это может быть связано с тем, что провайдер не поддерживает Entity Framework 6 или новее;

Не могли бы вы дать мне подсказку, что может вызвать проблему? Большое спасибо!

Мой app.config файл выглядит следующим образом: установлен

<configuration> 
    <configSections> 
     <section name="entityFramework" 
       type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> 
    </startup> 
    <entityFramework> 
     <defaultConnectionFactory type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6"/> 
     <providers> 
      <provider invariantName="System.Data.SQLite" 
         type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"/> 
      <provider invariantName="System.Data.SqlClient" 
         type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
      <provider invariantName="System.Data.SQLite.EF6" 
         type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /> 
     </providers> 
    </entityFramework> 
    <system.data> 
     <DbProviderFactories> 
      <remove invariant="System.Data.SQLite.EF6" /> 
      <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" /> 
      <remove invariant="System.Data.SQLite" /> 
      <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /></DbProviderFactories> 
    </system.data> 
    <connectionStrings> 
     <add name="ChinookContext" 
      connectionString="Data Source=|DataDirectory|Chinook_Sqlite_AutoIncrementPKs.sqlite" 
      providerName="System.Data.SQLite"/> 
    </connectionStrings> 
</configuration> 

Я следующие компоненты:

  • EF 6.0.0
  • System.Data.SQLite 1.0.99
  • системы. Data.SQLite.Core 1.0.99
  • System.Data.SQLite.EF6 1.0.99
  • System.Data.SQLite.Linq 1.0.99

ответ

4

Наконец-то я выясню проблему.

  1. Удалить SQLite пакеты niget
  2. установлен EF6 пакета
  3. установлена ​​NuGet пакет System.Data.SQLite 1.0.99 (Это установит всю необходимую зависимость)
  4. сделал некоторую коррекцию с app.cong файла Перечисленные ниже

    <?xml version="1.0" encoding="utf-8"?> 
    

И убедитесь, что:

  1. SQLite dlls в закладке ссылок ссылается на DLL внутри вашего проекта. Если вы установили SQLite с официального сайта, вы можете столкнуться со ссылками ...
  2. Проверьте файл app.config после установки пакетов.Удостоверьтесь, что в строках разделов DBprovider, EntityFramework и Connecstion перечислены выше.
  3. Используйте клавиши анататации данных, такие как [Таблица «Исполнитель»] и [«Ключ»] в классах моделей. (включая использование System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema;)

Удачи вам! Надеюсь, что это будет полезно для некоторых из нас/вас

+0

спасибо, что вы спасли мой день, и избегайте мне борьбы с этими зависимостями :) – cdescours

Смежные вопросы