Sqlite和EntityFramework 6 SqlConnection到EntityConnection的转换无效

时间:2015-11-27 14:20:00

标签: sqlite entity-framework-6

我正面临一个InvalidCastException(SqliteConnection to EntityConnection)并且让我发疯,因为我找不到有关它的信息,而我发现的信息根本不起作用。

我猜app.config文件有问题,但我尝试了很多没有任何结果的事情。

同时尝试更改DbContext,但结果相同,没有。

此处为app.config文件

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
    <providers>
      <providers>
         <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>
    </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" />
         <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="MailServerDBConnectionString"
         connectionString="metadata=res://*/Database.DatabaseEntities.MailServerDBModel.csdl|res://*/Database.DatabaseEntities.MailServerDBModel.ssdl|res://*/Database.DatabaseEntities.MailServerDBModel.msl;provider=System.Data.SQLite.EF6;provider connection string=&quot;data source=C:\MailServerDB.s3db&quot;"
         providerName="System.Data.SQLite" />
  </connectionStrings>

这里是DbContext:

public MailServerDBConnectionString()
        : base("name=MailServerDBConnectionString")
    {
    }

我在这里使用它:

try
{
            using (MailServerDBConnectionString context = new MailServerDBConnectionString())
            {
                    var inbound = context.C_DIRECTION.Find("INBOUND");
            }
}
catch (Exception crap)
{
            throw new Exceptions.DBException("Still not f*cking working", crap);
}

我已经尝试了一切,我希望以前有人遇到过这个问题,随时欢迎任何建议,谢谢您的时间。

1 个答案:

答案 0 :(得分:1)

经过几个小时和不同的错误后我才找到解决方案(或至少让它暂时工作)

“只需​​”将ConnectionString的providerName从System.Data.SQLite更改为app.config文件中的System.Data.EntityClient。

希望这适用于面临类似问题的下一个人。