Использование платформы объекта с SQL компактная частная установка

Я использую Платформу Объекта 4 в настольном приложении с Компактным SQL. Я хочу использовать частную установку SQL, Компактного с моим приложением, так, чтобы мой установщик мог установить SQL, Компактный, не давая пользователю вторую установку, чтобы сделать. Это также избегает стычек управления версиями в будущем.

Моя машина разработки имеет SQL Компактные 3,5 SP1, установленные как общедоступная установка, таким образом, мое выполнение приложения, прекрасное там, как можно было бы ожидать. Но это не работает на моей тестовой машине, которая не имеет SQL Компактным установленный. Я получаю эту ошибку:

The specified store provider cannot be found in the configuration, or is not valid.

Я знаю, что некоторые люди испытали трудности с SQL Компактные частные установки, но я использовал их некоторое время, и мне действительно нравятся они. К сожалению, мой регулярный частный подход к установке не работает. Я проверил номера версий на своих файлах CE SQL, и они - все 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

Я добавил ссылку на Систему. Данные. 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();

Я пропускаю файл? Я отсутствую, конфигурация stepp должен был сказать Платформу Объекта, где найти мой SQL Компактным DLLs? Какие-либо другие предложения, почему EF не находит мой SQL Компактным DLLs на машине установки?Спасибо за помощь.

20
задан Jon Seigel 16 May 2010 в 00:59
поделиться

2 ответа

Я понял, как это сделать, благодаря сообщению в блоге Стива Ласкера . В общем, вот что вам нужно сделать:

(1) Установите ссылку на System.Data.SqlServerCe.dll в вашем проекте. Установите для свойства CopyLocal значение True.

(2) В App.config вашего проекта добавьте следующую разметку XML. Он сообщает EntityFramework искать в вашей частной установке SQL Compact своего поставщика данных:

<system.data>
    <DbProviderFactories>
        <remove invariant="System.Data.SqlServerCe.3.5"/>
        <add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
    </DbProviderFactories>
</system.data>

(3) В проекте установки добавьте следующие файлы в папку приложения в редакторе файловой системы:

  • sqlcecompact35.dll
  • sqlceme35.dll
  • sqlcese35.dll
  • System.Data.SqlServerCe.Entity.dll
37
ответ дан 29 November 2019 в 22:50
поделиться

спасибо за ваш совет - мне очень помогли. В блоге SQL Server Compact-Team есть сообщение , которое добавляет некоторую дополнительную информацию о выпуске Sql Server Compact 3.5 SP2.

После некоторой борьбы с частным развертыванием sql server compact я обнаружил некоторые дополнительные требования.

Я опробовал свое приложение на нескольких разных системах и обнаружил, что мое приложение не работает должным образом на некоторых из них.

Пример: Попробуйте следующее:

-Я установил чистую установку winxp sp3

-установил расширенный .net Framework 4.0

-развернул мое приложение в новой установке (включая все необходимые DLL и настройки, описанные в блоге вашей / sql server compact team)

Итак, после некоторого исследования я обнаружил, что в дополнение к установке .net framework 4 мне также пришлось установить .net framework 2, и он работал нормально.

Итак, вот мой вопрос: какой компонент используется компактной версией sql server, которой нет в .NET framework 4?

Я не хочу перегружать мою установку и связывать две структуры с моим загрузчиком .. . Кто-нибудь знает хороший совет?

Большое спасибо команде sql server compact!

SQL Server Compact v3.5 зависит от «Visual C ++ Runtime 2005 (или 8.0)» (также известного как CRT80). Мы упаковываем модули CRT80 в наш MSI. В случае частного развертывания

вам необходимо позаботиться об этой зависимости. Все работает с .NET FX v2.0 в системе автоматически, потому что .NET FX v2.0 также упаковывает и устанавливает модули CRT80.

Спасибо

2
ответ дан 29 November 2019 в 22:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: