我编写了一个(可能不必要地)分层的应用程序。有两个独立的应用程序,一个是 UI,一个是 Windows 服务;两者都有在共享项目中驱动应用程序的实际代码(因此当我更新应用程序的运行方式时,我不必同时更新 UI 和服务中的代码)。除了共享的操作代码,共享项目还包含基类和一个接口,该接口定义了其他插件模块(类项目)的API,可以添加、暂停、立即运行等。UI/服务所做的只是告诉每个插件运行,然后通过电子邮件发送每个插件生成的结果。
除了共享项目中的主要数据模型之外,我还希望能够在这些插件项目中生成单独的数据模型。这样做的原因是,我不想每次为插件添加新表时都必须重新安装我的服务;通过将数据模型保留在插件中,我可以刷新插件并让服务或 UI 保持运行。我无法通过“在配置中找不到指定的命名连接,不打算与 EntityClient 提供程序一起使用,或者无效。” 错误。我已经将插件的连接字符串从它的 app.config 文件复制到共享项目的 app.config 文件和 UI 的 app.config 文件。我什至将 .edmx 文件从插件复制到共享项目和 UI 项目。然而我' 我仍然想出这个错误。我想知道它是否与连接字符串中引用的 .csdl、ssdl 和 .msl 文件有关(例如。res://*/ATS.csdl
)。我在拥有 .edmx 文件的所有三个项目的目录中都看到了这些文件\obj\Debug\edmxResourcesToEmbed
,但是尽管我知道要复制的每条信息都在我想复制的任何地方,但我仍然无法使用我的插件连接到数据库. 有任何想法吗?
ETA:我发现如果我从 app.config 文件中逐字复制连接字符串并在创建新实体对象时指定它,它会成功创建连接并能够查询数据库。所以似乎某个地方的某些 app.config 没有连接字符串,但所有应该需要它的地方都有它。
ETA 2:我打开了符号调试并挖掘了System.Data.EntityClient.EntityConnection
它失败的确切部分。它正在查看ConfigurationManager.ConnectionStrings
集合,但_items
成员(我希望它包含我的app.config
文件中列出的所有连接字符串)仅包含 SQLEXPRESS 数据库的“LocalSqlServer”条目。所以当然,当它尝试在我指定的名称下查找连接字符串时,它不能,因为它正在读取的任何配置文件都不包含它。仍在寻找一种方法来使这项工作正常......