エンティティフレームワーク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
でした。誰もこれを経験したことがありますか?