Entity Framwork 4.3とその移行を使用するASP.NET MVC 3プロジェクトがあります。次に、Entity Frameworkに、既にある移行を使用してデータベースを作成してもらいます。 Update-Databaseスクリプトを実行しようとすると、次のようになります。
Update-Database -Verbose -ProjectName AssemblyWithMigrations -StartUpProjectName WebProjectAssembly No migrations configuration type was found in the Assembly '/* my name of Assembly */'. (In Visual Studio you can use the Enable-Migrations command from Package Manager Console to add a migrations configuration).
しかし、実行しようとするとEnable-Migrations
以下が表示されます。
Migrations have already been enabled in project 'AssemblyWithMigrations '. To overwrite the existing migrations configuration, use the -Force parameter.
したがって、問題は、EFが現在の移行バージョンを解決してデータベースを更新しようとしていることだと思います。しかし、データベースは存在せず、明らかに失敗します。
問題は、データベースが存在しない場合にデータベースを作成するためにEFマイグレーションを使用する方法ですか?または、Nugetコンソールを使用してそれを行う正しい方法は何ですか?
要約すると、私が欲しいもの:1.コマンドを実行します(おそらくupdate-database
)これは、web.configファイルを使用してデータベースを作成します。2.すべての移行は、作成されたデータベースに作成順に適用されます。
ありがとう。 :)
私はこれが古い質問であることに気づきましたが、一体何が...
移行で初期データベースを作成できるようにするには、次の方法がうまくいくことがわかりました。
Package-Management-Consoleで「Add-Migration InitialCreate」と入力します。
[オプション、データベース初期化子に応じて]
これにより、「データベースなし」から現在のモデルに一致するデータベースを作成するための単一の移行スクリプトが得られます。
マイグレーションを使用することは非常に便利ですが、データベースを操作するときは、次のステートメントを使用する方がよい場合があることに気づきました。
データベースの初期化戦略:自分に関連するコメント付きステートメントを使用します。
public DataContext(): base("DefaultConnection")
{
// Database.SetInitializer<DataContext>(new CreateDatabaseIfModelChanges<DataContext>());
// Database.SetInitializer<DataContext>(new CreateDatabaseIfNotExists<DataContext>());
// Database.SetInitializer<DataContext>(new DropCreateDatabaseAlways<DataContext>());
}