2016-11-07 3 views
0

エンティティフレームワーク6.0を最初に使用する新しい開発プロジェクトでは、モデルをかなり更新する必要がありました。パッケージマネージャーコンソールでAdd-Migrationを使用して自動的に生成された更新スクリプトはかなり複雑になったので、やり直すことにしました。これを行うには、localhostからデータベースを削除し、プロジェクト内のMigrationsフォルダを削除しました。私はしかしAdd-Migrationを再実行-command私は、次のようなメッセージを持って、同じ更新スクリプトが再び生成されました:Entity FrameworkコードファーストターゲティングローカルSQL Server ExpressホストではなくLocalDb

この移行ファイルのためのデザイナーのコードは、あなたの 現在のコードファーストモデルのスナップショットを含んでいます。このスナップショットは、次回の移行を足場にしたときのモデルへの変更を計算するために使用されます( )。

__MigrationHistoryテーブルがまだ何らかの形で存在していたからです。私は再びデータベースに入りましたが、何も作成されておらず、データベースはまだ消えていました。

web.configで使用される接続文字列:

<connectionStrings> 
    <add name="DefaultConnection" 
     connectionString="Data Source=localhost;Initial Catalog=WebApp;Integrated Security=sspi;Pooling=false;" 
     providerName="System.Data.SqlClient" /> 
</connectionStrings> 

私はその後、私のプロセスをチェックしsqlservr.exe -processの2つのバージョンを見て、LocalDbが頭に浮かびました。私は(LocalDb)\MSSQLLocalDBに接続し、プロジェクトのすべてのテーブルを持つ「DefaultConnection」という名前の新しいデータベースがありました。このデータベースを削除すると、Add-Migration -commandから新鮮なスクリプトが得られました。私が100%SQL Server Expressホストに対してしばらく時間をかけて作業していたからです(データベースを削除したときの更新スクリプトの前のすべてのテーブル)。他のプロジェクトlocalhostはData Source=localhostで動作します。データベース名がWebAppの代わりにDefaultConnectionである理由を理解できません。 localhostに接続すると、データベース名はWebAppでした。誰もこれを経験したことがありますか?

enter image description here

答えて

1

は、最後にそれへの答えを見つけました。パッケージマネージャコンソールでDbContextを含むプロジェクトにDefault projectを設定するだけでは不十分ですまた、あなたのWebサイトがデフォルトのスタートアッププロジェクトとして設定されていることを確認する必要があります!

この小さな変更はすべて正常に機能しました。

どこにも記載されていないので、誰かを助けてくれることを願っています。

関連する問題