使用COM互操作从VBA找不到实体框架6的连接字符串



我正试图从VBA程序(在msaccess中)调用一个使用Entity Framework 6的C#程序。只有在第一次使用实体框架的行上,通过COM interop从VBA调用C#函数时,我才会不断出现此错误:

在应用程序配置文件中找不到名为"myEntities"的连接字符串。

我曾尝试将app.config复制到与masaccess.exe位于同一目录中的msaccess.exe.config,但这并不能解决问题。有什么简单的解决方案吗?谢谢

(有这个,但没有得到回复。关于这个主题的现有帖子没有帮助。设置互操作com对象的app.config文件的位置)

增编(根据我在下面的评论添加):强制配置位置似乎并不能帮助EntityFramework 6摆脱困境。我一直收到这个错误,其中"SettingGet"是我的小过程,它使用EF dbcontext查找值。(正常工作,除非使用COM互操作与VBA调用C#/.net。)

错误在VBA调用的C#类的私有ctor中(并且错误不会在VBA之外发生):这与相同的.config文件(app.config和MSACCESS.Exe.config)有关。错误如下(请注意,下面的"SettingGet"是我的代码中第一次使用EntityFramework):

The type initializer for 'System.Data.Entity.Internal.AppConfig' threw an exception. 
at System.Data.Entity.Internal.AppConfig.get_DefaultInstance() 
at System.Data.Entity.DbContext..ctor(String nameOrConnectionString) 
at MyCode.MyEntities..ctor() in MyCodeMyEntitiesModel.Context.cs:line 18   
at MyCode.MyUtils.SettingGet(String SettingName, String& sVal) in MyCodeMyCode.cs:line 867 
at MyCode.MyApp..ctor() in MySlnMyCodeMyCode.cs:line 190  

从COM Interop运行时调试C#代码并检查AppDomain.CurrentDomain.SetupInformation.ConfigurationFile。这将告诉您它希望在哪里找到它的配置文件。

最新更新