In one of my projects, I used SQL Server Compact 4.0, and my connection string was fairly simple:
<connectionStrings> <add name="MyDB" connectionString="Data Source=|DataDirectory|MyDB.sdf" providerName="System.Data.SqlServerCe.4.0" /> </connectionStrings>
I think you should check your providerName . I am not sure if System.Data.SqlClient is correct.
Have you installed the EntityFramework.SqlServerCompact NuGet package ? After installing it, System.Data.SqlServerCe.4.0 added the name of the provider that should be used in the connection string.
Make sure the SqlServerCompact provider SqlServerCompact added to your web.config .
<entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework"> <parameters> <parameter value="System.Data.SqlServerCe.4.0" /> </parameters> </defaultConnectionFactory> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> <provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" /> </providers> </entityFramework> <system.data> <DbProviderFactories> <remove invariant="System.Data.SqlServerCe.4.0" /> <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" /> </DbProviderFactories> </system.data>
source share