4

次のような VS 2012 ソリューションのセットアップがあります。

  • EF モデル プロジェクト
  • EF モデル テスト プロジェクト
  • ASP.NET MVC 4 アプリケーション
  • WCF データ サービス プロジェクト

開発中、LocalDB を EF のバッキング データベースとして使用したいと考えています。MVC および WCF プロジェクトはどちらも、EF モデルを使用してデータベース内のデータにアクセスします。すべてのプロジェクト (MVC、WCF、およびテスト) で同じ LocalDB インスタンスを共有したいのですが、web.config のセットアップを正しく行うことができないようです。

また、このプロジェクトのセットアップを開発者のマシン間で移植できるようにしたいと思います。つまり、絶対パスはありません。

テスト プロジェクトは、c:\users\\.mdf にデータベースを作成して使用します。MVC および WCF プロジェクトは、ファイルが AppData フォルダーに存在することを想定しています。必要に応じて手動でコピーしてきましたが、アプリがデータを変更すると明らかに同期が取れなくなります。

相対パスで同じインスタンスを共有するようにプロジェクトを構成する方法に関する提案や例はありますか?

4

3 に答える 3

1

minhcat_vo の例をまとめると、解決策がわかりました。

私が遭遇した問題は、DbContext 派生型の名前 (または注釈として設定したもの) に一致する明示的な接続文字列を指定しなかったときに発生しました。プロジェクトの種類によって動作が異なります。

  • テスト プロジェクトでは、\\.mdf にある MDF ファイルを使用して、DbContext の FQDN を持つローカル db カタログを使用します。
  • ASP.NET MVC プロジェクトでは、\app_data\.mdf から mdf をロードしようとします。

EF プロジェクトを MySQL に移行しているときに、このソリューションに出くわしました。MySQL EF プロバイダーは、どのような状況でも DefaultConnection 接続文字列にフォールバックしません (DbContext が明示的に選択しない限り、推測します)。MySQL-EF を機能させるには、コンテキストに一致する接続文字列を入力する必要がありました。これは、私が探していた答えに私を導きました。私のすべてのプロジェクトに次の接続文字列を使用することにより、それらはすべて同じ MDF ファイル/LocalDB インスタンスを共有します。

<add name="ThingsContext" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=Things;Integrated Security=SSPI" />

ThingsContext は、私のプロジェクトの DbContext インスタンスです。私のソリューション例 @ https://github.com/drdamour/SharedLocalDBを見ることができます

于 2013-04-18T21:37:29.163 に答える
0

すべてのプロジェクト (MVC、WCF、およびテスト) で同じ LocalDB インスタンスを共有したいのですが、web.config のセットアップを正しく行うことができないようです。

おそらく接続文字列の問題です。

相対パスで同じインスタンスを共有するようにプロジェクトを構成する方法に関する提案や例はありますか?

はい、各プロジェクトの web.config で相対パスを使用できます。ただし、 ConfigurationManagerを使用して処理できます。

于 2013-04-11T23:38:14.317 に答える
0

私は間違っているかもしれません.1つのlocalDBは一度に1つのアプリケーションにしかアクセスできません. 1 つのデータベースに複数のアプリケーションが同時にアクセスできるようにする場合は、LocalDB をエクスプレス エディションの SQL サーバーに接続します。アプリケーションごとにフォーム認証を使用してエクスプレスでユーザーを作成します。ConnectionString を、ユーザー名とパスワードを使用して Express SQL に変更します。準備できた。

于 2013-04-25T23:33:34.563 に答える