我们的软件作为Autodesk Inventor的附加模块工作。这意味着我们的应用程序(由DLL组成)文件夹完全独立于EXE。
问题出在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的bin文件夹(位于main EXE旁边),则一切正常,但这不是一个选项。
我已经研究了几个主题,建议修改app.config,指定不同的提供者。它们都类似于this和that。但在我的情况下就行不通了。修改app.config并不能帮助我指定提供程序的位置,即使它指定了,也不能修改配置(除非我可以有一个单独的配置)。
这有可能吗?我希望指定安装文件夹的位置,以便Entity Framework可以在那里查找SQL CE提供程序。
发布于 2013-06-12 01:09:31
我认为这是不可能的,您必须使用提供程序注册更新主.exe配置文件,或者安装SQL CE MSI。
https://stackoverflow.com/questions/17044980
复制相似问题