Я действительно удивился, что строка подключения работает вообще. Кроме того, было бы проще использовать string.Format для построения этой строки подключения:
var filename = @"F:\My Own programs\KrarZara2\KZ\KZ\Kzdb.s3db";
var connString = string.Format("Data Source={0};UseUTF16Encoding=True;", filename );
using( var conn = new SQLiteConnection( connString ) )
{
...
}
Во-первых, вы должны заменить UseUTF16Encoding правильным значением для вашей настройки. Во-вторых, обратите внимание, что путь к файлу в строке подключения не заключен в кавычки.
Если вы ищете способ обмена файлами данных Sqlite во время выполнения, вы можете посмотреть эту запись в блоге:
SQLite и Entity Framework 4
Резюме решения состоит в том, чтобы проанализировать строку подключения платформы Entity, изменить файл данных и затем сбросить его:
public static string RedirectedEntityFrameworkConnectionString(string originalConnectionString, string databaseFile, string password)
{
// Parse the Entity Framework connection string.
var connectionStringBuilder = new EntityConnectionStringBuilder(originalConnectionString);
if (connectionStringBuilder.Provider != "System.Data.SQLite")
{
throw new ArgumentException("Entity Framework connection string does not use System.Data.SQLite provider.");
}
// Parse the underlying provider (SQLite) connection string.
var providerConnectionStringBuilder = new SQLiteConnectionStringBuilder(connectionStringBuilder.ProviderConnectionString);
// Redirect to the specified database file, and apply encryption.
providerConnectionStringBuilder.DataSource = databaseFile;
providerConnectionStringBuilder.Password = password;
// Rebuild the Entity Framework connection string.
connectionStringBuilder.ProviderConnectionString = providerConnectionStringBuilder.ConnectionString;
return connectionStringBuilder.ConnectionString;
}
Чтобы использовать, вы должны сделать что-то вроде:
const string OriginalConnectionString = "..."; // (Copy out of app.config)
var connectionString = RedirectedEntityFrameworkConnectionString(OriginalConnectionString, myFileName, null);
using (var context = new MyEntities(connectionString))
{
...
}