2016-02-09 140 views
1

我想在SQLite上使用實體框架5(http://brice-lambson.blogspot.ru/2012/10/entity-framework-on-sqlite.html)。我已經安裝了SQLite和EF6。不過,我得到了一個錯誤:SQLite和實體框架6如何結合

實體框架提供程序類型「System.Data.SQLite.SQLiteFactory,System.Data.SQLite的「實例」成員,版本= 1.0.99.0,文化=中立,公鑰= 「db937bc2d44ff139」沒有返回從「System.Data.Entity.Core.Common.DbProviderServices」繼承的對象。實體框架提供者必須從這個類繼承,'實例'成員必須返回提供者的單例實例。這可能是因爲提供程序不支持實體框架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. 刪除源碼niget包
  2. 安裝EF6包
  3. 安裝的NuGet包System.Data.SQLite 1.0.99(這將安裝所有必要的依賴)
  4. 做了一些修正與app.cong文件下面

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

    上市

,並確保:

  1. 參考選項卡中的SQLite dll指的是項目中的dll。如果你從官方網站安裝SQLite,它會引用一些混亂的引用...
  2. 安裝包後檢查app.config文件。確保DBprovider,EntityFramework和Connecstion字符串部分用於上面的列表。
  3. 使用模型類中的[Table「Artist」]和[「Key」]等數據解析鍵。 (包括使用System.ComponentModel.DataAnnotations;使用System.ComponentModel.DataAnnotations.Schema;)

祝你好運! 希望這將是有用的我們有些人/你

+0

謝謝你救了我的一天,並避免我掙扎與這些依賴:) – cdescours