3

我有一个 C# 类库,我已经让 COM 可见,所以我也可以从用 Visual Studio 6 编写的遗留应用程序调用它。这个库中有一个实体框架,用于将记录添加到数据库。通过 COM 调用库可以工作,但记录不会添加到数据库中。我决定调试它的最简单方法是将 C# WinForms 测试应用程序添加到库解决方案中。这就是我注意到实体框架在这里也失败的地方。事实证明,这是因为库中的 app.config 连接字符串也需要成为测试应用程序的一部分。这很好,这样做意味着 WinForms 应用程序可以正常工作,并且记录已添加到数据库中。

但是,对于从旧版应用程序通过 COM 进行的调用,我该如何解决这个问题?显然他们没有 app.config。

4

1 回答 1

0

您是否尝试将 app.config 放在您的 COM exe 文件附近?如果这不起作用,那么您的库无法使用 app.config 中的默认连接字符串。相反,它应该:

  1. 手动从注册表或配置文件中读取它(也许 ConfigurationManager.OpenExeConfiguration 可以做到?或在这里查看http://geekswithblogs.net/akraus1/archive/2006/01/04/64871.aspx一个标题为“如何读/写”的示例关于使用 ExeConfigurationFileMap 的另一个 App.Config 文件)。或者
  2. 接受它作为将从您的 COM 应用程序传递的参数。然后,您的 COM 应用程序应该从注册表或某种 ini 文件中获取该连接字符串。

无论哪种方式,您都必须手动将获取的连接字符串提供给实体框架。快速搜索显示有一个 EntityConnection 构造函数接受连接字符串作为参数,也许它会适合你。

于 2012-07-13T14:36:47.943 回答