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

问题描述:

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

但是,我怎样才能解决这个问题,通过传统的应用程序通过COM调用?显然他们没有app.config。

+0

将连接字符串硬编码到适配器中? – 2012-07-13 14:22:34

你试过把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文件中获取该连接字符串。

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