2017-05-08 8 views
1

私はEntity Frameworkを使用して、データベースを更新するコードの最初の移行を使用しているプロジェクトに取り組んでいます。私は別のマシンでこのプロジェクトを開始し、非常にうまくいった。今度は別のマシンでコードをチェックアウトしました。このマシンにはデータベースがないので、nugetでupdate-databaseコマンドを実行しました。以前のマイグレーションを適用し、このマシンに新しいデータベースを作成する必要がありますが、それには次のエラーが表示されます。エンティティフレームワーク:コードの初回移行のためのDataSourceを変更できません

error

ローカルSQL Expressインスタンスがあれば、コードファーストは、そのインスタンス 上のデータベースを作成しています(Visual Studioの2010年にデフォルトでインストール)が利用可能であるならば、私は

を言うthis MSDN記事を読みますSQL Expressは使用できません。次に、Code FirstはLocalDbを使用します(Visual Studio 2012にデフォルトでインストールされます)。

これは、最初のマシンでマイグレーションを有効にしたときに、DataSourceとしてSQLEXPRESSインスタンスを持つデータベースを作成したので、現在のマシンにはそのデータベースがないため、データベースを作成できません。だから私はEntityFrameworkのDataSourceをLAPTOP-HD618J49である現在のSQL Serverのインスタンスに変更しようとしています。このため、私は、このインスタンスを持つハードコードされた接続文字列をapp.configに書き込もうとしましたが、データコンテキストクラスのContextNameを変更しましたが、役に立たなかった。私が逃しているかもしれないことについていくつかの方向を教えてください。

+0

[here](http://www.entityframeworktutorial.net/code-first/database-initialization-in-code-first.aspx)に記載されているように、コンテキストのコンストラクタに接続文字列名を指定することをお勧めします。 。次に、その接続文字列を設定ファイルに追加します。コンテキストの名前を変更する必要はありません。 –

+0

@SteveGreene私もそれを試みました。それでも同じエラー。 –

+0

まず、VS(またはSQL Management Studio)のSQL Server Object Explorerを使用して目的のデータベースに接続し、アクセス権があることを確認します(デフォルトではリモートデータベースにアクセスできません)。次に、エラーメッセージは引き続き '。\ SQLEXPRESS'を参照していますか?これは、LAPTOP-HD618J49に接続文字列を使用していないことを示しています。 –

答えて

0

私はついにこの問題を解決しました。以前はbase("name=ConnectionStringNameHere")を使用しようとしましたが、パッケージマネージャコンソールでupdate-databaseコマンドを実行しても機能しませんでした。奇妙な理由は、Visual Studioはどのapp.configがConnectionStringNameをチェックするか分からないからです。私はすでにパッケージマネージャコンソールのドロップダウンでエンティティフレームワークを持つモジュールを選択しましたが。エンティティフレームワークを持つモジュールをソリューションエクスプローラウィンドウから選択し、スタートアッププロジェクトとして設定する必要がありました。これは何とか問題を解決し、更新されたDataSourceを持つモジュールのapp.configからConnectionStringNameを選択することができました。

関連する問題