Наше программное обеспечение работает как надстройка для Autodesk Inventor. Это означает, что наше приложение (состоящее из библиотеки DLL) полностью отделено от EXE.Entity Framework и закрытое развертывание SQL CE для DLL
Проблема заключается в том, что Entity Framework пытается загрузить поставщика SQL CE, который находится в частном порядке рядом с остальными библиотеками DLL в нашем приложении. Я получаю следующее сообщение об ошибке при запуске приложения на компьютере, на котором не был установлен SQL CE:
System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed.
at System.Data.Entity.Infrastructure.SqlCeConnectionFactory.CreateConnection(String nameOrConnectionString)
at System.Data.Entity.Internal.LazyInternalConnection.Initialize()
at System.Data.Entity.Internal.LazyInternalConnection.get_ProviderName()
at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
at ...
Если скопировать все файлы установки SQL CE в бункерном папке Inventor (рядом с основной EXE) , все работает отлично, но это не вариант.
Я уже изучил несколько тем, предлагая изменить app.config, указав другого поставщика. Все они аналогичны this и that. Но в моем случае это не работает. Модификация app.config не позволяет мне указать местоположение провайдера, и даже если это произойдет, изменение конфигурации не является вариантом (если только у меня не может быть отдельная конфигурация).
Возможно ли это? Я хотел бы указать расположение папки для установки, поэтому Entity Framework может искать там поставщика SQL CE.