3つのプロジェクトを含むVisualStudio2010ソリューションがあります。
- SQLiteデータベースからデータを読み取ってアクションを実行するWindowsサービス
- (SQLiteデータベースを更新することによって)サービスの動作を構成する方法を提供するWinformsアプリ
- サービスと構成アプリからすべてのデータベースアクセスを抽象化するクラスライブラリプロジェクト(他の2つのプロジェクトでクエリを探すことなく、データベースに関係するすべてのものを将来簡単に更新できるようにします)
これらのプロジェクトはすべて同じソリューションに含まれており、Winformsアプリとサービスからの参照をクラスライブラリに追加しました。どちらのプロジェクトでも、クラスライブラリからクラスを確認して操作することはできますが、問題が発生しています。クラスライブラリプロジェクトの/Resources/ディレクトリにデータベースを作成しました(私にとっては、「共通」プロジェクトが共通データベースを格納するための唯一の適切な場所であるため)。ただし、Winformsアプリでデータベースにアクセスしようとすると、そこにあることがわかっているデータは返されません。System.Data.SQLiteには、ファイルが見つからない場合に空のデータベースファイルを作成するデフォルトの動作があるため(私の意見では奇妙な選択です)、データベースが存在するかどうかを確認することすらできません。
これにより、あるプロジェクトのファイルが別のプロジェクトでどのように参照されているかを正しく理解していないのではないかと思います。私のプロジェクトは次のようになります。
WorkModeCommonクラスSQLiteDatabaseおよびScheduleManagerが含まれます。ScheduleManagerにはSQLiteDatabase()があり、SQLiteDatabaseはResources/WorkModeSchedules.s3dbと対話します。
WorkModeConfigAppとWorkModeServiceの両方にWorkModeCommon.ScheduleManager()があり、理論的にはすべてのデータベースの相互作用を処理する必要があります。
私のデザインに大きな欠陥がありますか、それとも私が抱えている問題を解決するのに役立つリソースを誰かに教えてもらえますか?