我正试图从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
。这将告诉您它希望在哪里找到它的配置文件。