我有一个包含三个项目的 Visual Studio 2010 解决方案:
- 一个 Windows 服务,它将从 SQLite 数据库中读取数据以执行操作
- 一个 Winforms 应用程序,它将提供一种配置服务行为的方法(通过更新 SQLite 数据库)
- 一个类库项目,用于将所有数据库访问从服务和配置应用程序中抽象出来(使将来更容易更新与数据库有关的任何内容,而无需在其他两个项目中查找查询)
所有这些项目都在同一个解决方案中,并且我已将 Winforms 应用程序和服务的引用添加到类库中。在这两个项目中,我都能够看到类库中的类并与它们进行交互,但我遇到了问题。我已经在我的类库项目的 /Resources/ 目录中创建了数据库(因为对我来说“公共”项目是存储公共数据库的唯一明智的地方),但是每当我尝试在 Winforms 应用程序中访问数据库时,它没有返回我知道的数据。由于 System.Data.SQLite 具有在未找到文件时创建空数据库文件的默认行为(我认为这是一个奇怪的选择),因此我什至无法返回并判断数据库是否存在。
这让我怀疑我没有正确理解一个项目中的文件是如何在另一个项目中引用的。这是我的项目的样子:
WorkModeCommon 包含类 SQLiteDatabase 和 ScheduleManager,其中 ScheduleManager 有一个 SQLiteDatabase() 并且 SQLiteDatabase 与 Resources/WorkModeSchedules.s3db 交互
WorkModeConfigApp 和 WorkModeService 都有一个 WorkModeCommon.ScheduleManager(),理论上它应该负责所有的数据库交互。
我的设计是否存在重大缺陷,或者有人可以向我指出可以帮助我解决我遇到的问题的资源吗?