私はこの問題をできる限り明確に説明しようとしています。Web APIとEntity Framework、データベース接続を指定する場所は?
私は2つのプロジェクトを開始します。
プロジェクトワン:データモデル
単一DbSetを持っているDbContextをラップリポジトリクラス:RentalListings
このDbContextを使用しています変更を保存すると、ローカルDBに保存されるようになります。
プロジェクト2:コンソールアプリケーション
実行すると、リポジトリクラスのインスタンスをインスタンス化することをコンソールアプリケーションが含まれています。
次に、複数の「レンタルリスト」を作成し、それらをリポジトリに保存します。
これまでのところとても良いです。コンソールアプリケーションを実行した後、私はローカルのDB SQLオブジェクトエクスプローラをチェックし、私のリポジトリクラスはsuccessfulyこのdbに保存されています。
今、私はこの挿入されたデータにWeb APIを介してアクセスする方法が必要です。私は新しいコントローラクラスを作成するWeb API
とのすべてのリストを取得するために、単一のGETアクションメソッドを追加します。
プロジェクト3:だから私は追加します。正しいURLを経由して
[HttpGet]
public IEnumerable<RentalListing> GetAllListings() {
StatsRepository repository = new StatsRepository(new StatsContext());
return repository.GetRentalListings();
}
:私はAPIプロジェクトを実行すると
は、私のように見えるアクションメソッドを打つことができます。しかし、私は次のエラーが返さ取得しています:
Unable to complete operation. The supplied SqlConnection does not specify an initial catalog or AttachDBFileName.
さて、私は問題は、それがデータベースにアクセスする方法を知らないということだと思うのウェブ検索から???そして、Web APIプロジェクトのWeb.configファイルに接続文字列を指定する必要があります。
質問:
1)どのように接続文字列を指定していない私のコンソールアプリは、私のリポジトリクラスを使用してMDFのデータベースを作成しましたか?
2)Web apiプロジェクトで同じ作業が行われないのはなぜですか?コンソールアプリケーションのように、リポジトリを使ってデータベースを取得することはできませんか?
返信をお待ちしております、ありがとうございます!
おかげでたくさんの。それは私のコンソールアプリケーションが接続文字列を必要としない理由を理解する助けになりました(規約では、ローカルDBを使ってMDFファイルを作成しました)。まったく同じDBコンテキストを使用しているWeb APIプロジェクトがなぜ同じことをすることができないのかについてはまだ曇っています。しかし、私はちょうどそれを今受け入れます! – AndyNZ
あなたは暖かく歓迎しています:)あなたの質問については、EFはHTTP/S(web/web API)で使用するとそのように設計されました。そのような状況ではコンソールアプリケーションのように動作しません。 – Sampath