0

私のWinFormアプリケーションはMVCパターンを実現し、2つのプロジェクトで構成されています。最初のものには、ViewレイヤーとControllerレイヤーと、2つ目のModelレイヤー(クラスライブラリー)が含まれています。MVCパターン。 "アプリケーション構成ファイルの名前で接続文字列を見つけることができませんでした"

アプリケーションはデータベースから情報を取得する必要があります(私はMS SQL Serverを使用します)。

2番目のプロジェクト(モデル層)には、ADO.NETモデル、app.configでデータベースと適切な接続文字列を処理するメソッドがあります。しかし、私はアプリケーションを実行すると、データベースにクエリを作成しようとすると、 "アプリケーションの設定ファイルの名前と接続文字列を見つけることができませんでした"が表示されます。

コントローラがモデルのメソッドを呼び出してデータベースアプリケーションにクエリを実行すると、メインプロジェクトのApp.configファイル内の接続文字列を見つけようとしたときに、そのファイルが見つかりませんでした。私はコントローラとビューでプロジェクトに接続文字列を作成するのは適切ではないと思います。

どうすれば問題を正しい方法で解決できますか?

答えて

1

App.config(または適切な場合はWeb.config)は、アプリケーションに属し、クラスライブラリには属しません。

コントローラ/ビューレイヤがWindowsフォームプロジェクトで、モデルレイヤがクラスライブラリプロジェクトの場合、App.configはWindowsフォームプロジェクトに属します。

I think it's not right to create a connection string in the project with Controller and View.

これは、コントローラとビューとは関係ありません。 App.configはMVCパターンの一部ではありません。これは、環境用のアプリケーションの設定と関係があります。任意のクラスライブラリは、アプリケーションと環境間で移植可能でなければなりません。任意のアプリケーションは、デプロイされている環境で実行するように構成する必要があります。


基本的には、アプリケーションのApp.configであなたのApp.config値を置きます。

+0

Winformsプロジェクトの設定で接続文字列を追加してアプリケーションを実行しますが、エラーが発生します。「System.Data.Entity.Infrastructure.UnintentionalCodeFirstException」 – Anrei

+0

@Andrei:Googleでその例外を調べましたか? Entity Frameworkをどのように使用しているか、提供している接続文字列との間に矛盾があるようです。これは役立つ可能性があります:http://stackoverflow.com/questions/5940616/model-first-with-dbcontext-fails-to-initialize-new-database – David

+0

DbContextクラスのOnModelCreatingメソッドにエラーが表示されます。このメソッドは、データベースへのLINQクエリが初期化された瞬間に呼び出されます。 – Anrei