我正面临一个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="data source=C:\MailServerDB.s3db""
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);
}
我已经尝试了一切,我希望以前有人遇到过这个问题,随时欢迎任何建议,谢谢您的时间。
答案 0 :(得分:1)
经过几个小时和不同的错误后我才找到解决方案(或至少让它暂时工作)
“只需”将ConnectionString的providerName从System.Data.SQLite更改为app.config文件中的System.Data.EntityClient。
希望这适用于面临类似问题的下一个人。