Just thought I’d share another way to configure EF6 with SQLite without using app.config
/ web.config
. EF6 now supports code based configurations as outlined here on msdn. I used the following code (updated to remove reflection thanks to Sly):
public class SQLiteConfiguration : DbConfiguration
{
public SQLiteConfiguration()
{
SetProviderFactory("System.Data.SQLite", SQLiteFactory.Instance);
SetProviderFactory("System.Data.SQLite.EF6", SQLiteProviderFactory.Instance);
SetProviderServices("System.Data.SQLite", (DbProviderServices)SQLiteProviderFactory.Instance.GetService(typeof(DbProviderServices)));
}
}
I use this so I can inject the correct DbContext
and hence DbProvider
at runtime and don’t need everything configured in the main assembly.
Edit:
As Reyn said you will also need to add an IDbConnectionFactory
for SQLite if you wish to have your connection string in your web.config
/ app.config
file. Another approach is to call a different base constructor from your DbContext
which passes in a new SQLiteConnection
rather than the connection string, as shown in this answer.