私はWPFでデスクトップアプリケーションに取り組んでおり、データを格納するためにLocalDBを使用してSqlRepositoryを作成しています。次のツールを使用しています
Microsoft SQL Serverデータベースファイル(SqlClient)構成でローカルデータベースを作成しました。データベースが正常に作成され、以下はSQLからフェッチされた接続文字列です
Data Source=(LocalDB)\v11.0;Initial Catalog=D:\USERS\USERNAME\DOCUMENTS\TestDatabase\testdb.MDF;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False
App.configで同じ接続文字列を使用しています。 Visual StudioのSQL Serverデータベースエクスプローラーでデータベースオブジェクトを表示できます。しかし、nugetパッケージマネージャーコンソールでupdate-databaseコマンドを実行すると、以下のエラーが発生します。
SQL Serverへの接続を確立中にネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからなかったか、アクセスできませんでした。インスタンス名が正しいこと、およびSQL Serverがリモート接続を許可するように構成されていることを確認してください。 (プロバイダー:SQLネットワークインターフェイス、エラー:26-指定されたサーバー/インスタンスの検索エラー)
同様の問題があり、「スタートアッププロジェクト」を別のモジュールからソリューション内の他のすべてのプロジェクトへの参照を含むモジュールに変更したときに修正しました。モジュールを右クリック>>「スタートアッププロジェクトとして設定」をクリック
ディエゴの答えは正しいです。
この問題は、スタートアッププロジェクトとしてマークされたプロジェクトに接続文字列がない場合に発生します。次に、EFはデフォルトのデータベースエンジンに接続して更新を実行しようとします。私の場合、エクスプレスを使用しようとしましたが、何らかの理由で接続できませんでした。そして、エラーがスローされました。
オプション「-Verbose」を指定して「update-database」を実行します。そこの行の1つは、使用されているStartUpプロジェクトを示しています。このプロジェクトの接続文字列を確認するか、スタートアッププロジェクトを正しい接続文字列を持つプロジェクトに変更してください。これで問題は解決しました。
他の回答で説明されているように、問題は通常、パッケージマネージャーコンソールに間違った初期プロジェクトがあることが原因です。私の場合、コンソールはデフォルトプロジェクトのドロップダウンリストで選択した値と-StartUpProjectName
パラメータを無視し、Mikkの回答で説明されているように、デフォルトのデータベースエンジンに接続しようとするという間違った動作を再現していました。私の場合はSqlExpressエンジンを使用しています。
私の問題は、間違ったソリューション構成が原因で発生しました。ソリューションに複数のプロジェクトがあり、構成オプション「複数のスタートアッププロジェクト」で実行することを意図しているが、ソースコード管理リポジトリからダウンロードしただけの場合、デフォルトの構成オプション「単一のスタートアッププロジェクト」がソリューションに適用されています(この構成値は通常、ソースコード管理でチェックインされません)。この場合、パッケージマネージャーコンソールは、コンボで選択されたスタートアッププロジェクトを無視し、デフォルトのスタートアッププロジェクトをソリューションに適用します。これには、Mikkの回答で指定されている接続文字列がない可能性があります。
ソリューションのプロパティを変更して修正しました:Common properties
/Startup project
/Multiple startup projects
ではなくSingle startup project
を選択すると、パッケージマネージャーコンソールがプロジェクト名を受け入れて更新します適切なデータベース。
この接続文字列で試してください:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=D:\USERS\USERNAME\DOCUMENTS\TestDatabase\testdb.MDF;Initial Catalog=testdb;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
pdate-databaseコマンドにパラメーターを追加する でこれを解決することができました:
update-database -StartupProjectName MyApp.Web -ConnectionStringName MyAppConnectStringInWebConfig
SQL Serverへの接続を確立中にネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからなかったか、アクセスできませんでした。インスタンス名が正しいこと、およびSQL Serverがリモート接続を許可するように構成されていることを確認してください。 (プロバイダー:SQLネットワークインターフェイス、エラー:26-指定されたサーバー/インスタンスの検索エラー)
このエラーメッセージは、SQL Server
に接続できないことを通知しています。考えられる理由とその排除について以下に説明します。
1)SQL Serverが起動していません。これを開始すると、使用可能なSQLサーバーのドロップダウンリストにSQLサーバー/インスタンスが表示されます。
2)ファイアウォールがポート1433(接続用のMSSQL標準ポート)をブロックしている。以下の手順に従って無効にすることができます。
注:この詳細については、Microsoftの公式サイトをご覧ください。 Link
3)TCP/IPプロトコルは、MSSQLプロトコルでは無効です。これを有効にするには、以下の手順を参照してください。
注:この詳細については、Microsoftの公式サイトをご覧ください。 Link
4)リモート接続を受け入れるようにデータベースエンジンが構成されていることを確認します(集中データベースを使用している場合)。
5)名前付きSQL Serverインスタンスを使用している場合は、接続文字列でそのインスタンス名を使用していることを確認してください。通常、データベースサーバーの指定に必要な形式は、machinename\instancenameです。
6)ログインアカウントに、ログイン中に使用したデータベースへのアクセス権限があることを確認します。別の方法:それでも接続できない場合は、サーバー上にSQLアカウント、問題のデータベース上に対応するSQLユーザーを作成し、このユーザー名/パスワードのログインデータを使用してSQL Serverに接続することができます。
これから参照 link
LocaldbではなくSQL Serverに接続しようとしている場合は、web.configファイルのデフォルトの接続ファクトリが以下のようになっていることを確認してください。
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="Data Source=.\SQLEXPRESS2012; Integrated Security=True; MultipleActiveResultSets=True" />
</parameters>
</defaultConnectionFactory>
このエラーを解決して、初期プロジェクトをエンティティプロジェクトに変更しました。
見て:
Update-Database -Verbose StartUpプロジェクト 'SCVE.Web'を使用しています。 <-NuGetプロジェクト 'SCVE.EntityFramework'を使用したこのirエラー。
新しく作成したASP.NETプロジェクトでも同じ問題が発生しました。
まず、上記のようにスタートアッププロジェクトを設定してみました。スタートアッププロジェクトが選択されていなかったため、選択できませんでした。
最終的に、Visual Studioを2015 Update 1から2015 Update 3に更新し、
update-database
問題なく実行されました。