COM可见C#类库中的ADO.NET实体框架

时间:2012-07-13 13:44:16

标签: c# com ado.net

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

但是,如何通过旧版应用程序的COM调用来解决这个问题呢?显然他们没有app.config。

1 个答案:

答案 0 :(得分:0)

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

  1. 手动从注册表或配置文件中读取它(可能是ConfigurationManager.OpenExeConfiguration可以做到的吗?或者在这里看http://geekswithblogs.net/akraus1/archive/2006/01/04/64871.aspx一个标题为“如何读/写另一个App.Config文件”的例子,关于使用ExeConfigurationFileMap)。 或
  2. 将其作为将从COM应用程序传递的参数接受。然后你的COM应用程序应该从注册表或某种ini文件中获取该连接字符串。
  3. 无论哪种方式,您都必须手动将获取的连接字符串提供给Entity Framework。快速搜索显示有一个EntityConnection构造函数接受连接字符串作为参数,也许它适合您。