Getting the above error when try to deploy my ASP.NET MVC project to AppHarbor: This is the stack trace:
[ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed.]
System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) +77
System.Data.Entity.Infrastructure.SqlCeConnectionFactory.CreateConnection(String nameOrConnectionString) +56
System.Data.Entity.Internal.LazyInternalConnection.Initialize() +309
System.Data.Entity.Internal.LazyInternalConnection.get_ProviderName() +13
System.Data.Entity.Internal.LazyInternalContext.InitializeContext() +330
System.Data.Entity.Internal.LazyInternalContext.MarkDatabaseInitialized() +16
System.Data.Entity.Database.Initialize(Boolean force) +24
TolMobile.Data.Context.TolTestDbContext.InitialiseDatabase(IDatabaseInitializer`1 strategy) in d:\temp\wepseqgv.iiu\input\TolMobile.Data\Context\TolTestDbContext.cs:21
TolMobile.MvcApplication.Application_Start() in d:\temp\wepseqgv.iiu\input\TolMobile\Global.asax.cs:63
I've searched high and low and tried to add the required SQLCe dependencies to my project with 'LocalCopy' enabled but still no luck. Would be nice if the assembly that was missing (if that is the problem) would show in the log so I know what is wrong.
I think it is definitely an Assembly GAC problem. The GAC on the AppHarbor server is missing something because it runs fine on my machine. What I don't understand however, is that all dependencies are added via NuGet and should be included in the project and be self-contained. Why would this not work on another server?
You shouldn't use SQL Server CE on AppHarbor. SQL Server CE uses the worker filesystem for storage and that's not persisted across deploys, nor is it synced between workers if you've scaled to multiple workers. Use the SQL Server add-on instead. Here's a guide.