Этот вопрос немного старый. Но я думаю, что ответ заключается в том, что VS2010 SP1 имеет только SQLCE 3.5 и SQLCE 3.5 x64, а не SQL Compact 4.0. Продукты SQL поставляются вместе со Studio. В 2012 году до сих пор нет SQLCE 4.0, включенного в дистрибутив Studio 2010 (я использую Express edition).
Эта версия упаковки не является прямой причиной, а просто подсказкой, что другая версия потребует дополнительных усилий.
Исправление должно включать регистрацию «Провайдера данных» в .NET Framework, используемом Visual Studio.
Посмотрите на "DbProviderFactories" внутри c: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ machine.config. В этом разделе описывается, какие поставщики данных могут использовать .NET и Studio.
Если там есть непредвиденные записи, попробуйте восстановить фреймворк или зарегистрировать провайдеров вручную. Для этого потребуются некоторые инструменты регистрации низкого уровня. Скажем, для провайдеров asp.net есть aspnet_regsql.exe и т. Д. Но для самого SQLCE должно быть что-то подобное.
<system.data>
<DbProviderFactories>
<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.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
</DbProviderFactories>
</system.data>
Разница между сломанной Studio и работающим приложением заключается в том, что оба используют один и тот же Framework, но имеют разных провайдеров в конфигурации. (Или приложение использует другую технику, чтобы выбрать DLL и открыть SDF)
Ответ: Начиная с SP1, официально можно использовать SQLCE4.0 в Studio 2010 SP1 (спасибо Натану Фишеру за ссылку http://support.microsoft.com/kb/983509)