質問: どこのデータベースをビジュアルスタジオのソリューションの下に置いてビルドし、一度クリックすれば展開できますか? 私はローカルデータベース(MS Access)をリモートSQLサーバーのキャッシュとしてアクセスするアプリケーションを作成しています。 私は "論理"プロジェクトと "UI"プロジェクトを持っています。現在のところ、UIプロジェクト内の.accdbファイルで、アクションをビルドしてコンテンツに設定し、新しい場合はコピーします。しかし、これはどういうわけか本当に間違っていると感じますが、私はそれを扱う正しい体系的な方法は何か分かりません。 データベースプロジェクトを作成する必要がありますか?しかし、正直言って、私はデータベースプロジェクトになると非常に無知ですどこで学習を開始するか分からない。また、Visual Studioで使用できるオプションはSQLベースのみであるようです。 私は新しいプロジェクトを作成し、内容として.accdbを入れ、バージョンアップ、マイグレーション、現時点ではソリューションのどこにもないスキーマのアップデート用のコードをプロジェクトに追加するべきかもしれないと思っています。 どのように私は頭を下げるべきですか?
回答: 責任を明確に分けるために、UIプロジェクト以外の場所にデータアクセスを配置します。別のプロジェクトでUIプロジェクトはデータアクセスプロジェクトを使用して、関連するデータアクションを実行します。 UIプロジェクトが知っているインターフェイス(IDataAccessなど)を抽出し、データアクセスプロジェクトが実装します。 UIコードが参照する別のプロジェクト(たとえばShareInterfaces)にインターフェイスを配置し、データアクセスプロジェクトの参照と実装を行うことができます。次に、UIコードでDependency Injectionを使用して、IDataAccessの実装を取得できます。 そこには、オープンソースの依存性注入(または時には知られているようにIoC)フレームワークがたくさんあります。以前はNinjectを使用していましたが、単純なケースではうまく動作します。XML設定は不要で、コード内で宣言的にすべてのバインディングを実行できます。 依存関係注入は必須ではありませんが、コード内の依存関係を切り離してコードユニットをテスト可能にするうえで便利です。