Я использую Entity Framework 4 в настольном приложении с SQL Compact. Я хочу использовать частную установку SQL Compact с моим приложением, чтобы мой установщик мог установить SQL Compact, не предоставляя пользователю вторую установку. Это также позволяет избежать проблем с версиями в будущем.
На моей машине разработки SQL Compact 3.5 с пакетом обновления 1 (SP1) установлена как общедоступная установка, поэтому мое приложение там работает нормально, как и следовало ожидать. Но он не работает на моей тестовой машине, на которой не установлен SQL Compact. Я получаю эту ошибку:
The specified store provider cannot be found in the configuration, or is not valid.
Я знаю, что у некоторых людей были проблемы с частными установками SQL Compact, но Я использовал их некоторое время , и они мне действительно нравятся. К сожалению, мой обычный подход к частной установке не работает. Я проверил номера версий в моих файлах SQL CE, и все они 3.8.8078.0, то есть версия SP2 RC.
Вот файлы, которые я включил в мою личную установку:
- sqlcecompact35.dll
- sqlceer35EN.dll
- sqlceme35.dll
- sqlceqp35.dll
- sqlcese35.dll
- System.Data.SqlServerCe.dll
- System.Data.SqlServerCe.Entity.dll
Я добавил ссылку на System.Data.SqlServerCe в свой проект и убедился, что все перечисленные выше файлы копируются в папку приложения на установочном компьютере.
Вот код, который я использую для настройки EntityConnectionStringBuilder при открытии файла SQL Compact:
var sqlCompactConnectionString = string.Format("Data Source={0}", filePath);
// Set Builder properties
builder.Metadata = string.Format("res://*/{0}.csdl|res://*/{0}.ssdl|res://*/{0}.msl", edmName);
builder.Provider = "System.Data.SqlServerCe.3.5";
builder.ProviderConnectionString = sqlCompactConnectionString;
var edmConnectionString = builder.ToString();
Я пропустил файл? Мне не хватает степпа конфигурации, необходимого, чтобы сообщить Entity Framework, где найти мои библиотеки SQL Compact DLL? Любые другие предложения, почему EF не находит мои библиотеки SQL Compact DLL на установочном компьютере? Спасибо за вашу помощь.