2013-10-23 11 views
10

私は間違っています。私はユーザーDbContextのセットアップを持っていて、元々PowerShellでCode-Firstを作成したときにうまくいきました。EntityFramework 6.0 CreateDatabaseIfNotExists最初にデータベースを作成するコード

アプリケーションの開始時に期待通りにDatabase Initializerを実装しました。それは本当に私が実際にデータベースを落とし、今私は、データベースが作成されません立ち往生していたデータベースを作成した場合だけでテストする

Database.SetInitializer<UserDbContext>(new CreateDatabaseIfNotExists<UserDbContext>()); 

。私はSQL Server 2012を使用しています。

私は取得していますエラーメッセージが

System.InvalidOperationException: Migrations is enabled for context 'UserDbContext' but the database does not exist or contains no mapped tables. Use Migrations to create the database and its tables, for example by running the 'Update-Database' command from the Package Manager Console. 

である私は、パッケージマネージャコンソールから同じことを試してみましたが、それはまだ私に同じメッセージを与えています。

答えて

14

最終的に解決策を見つけ出しました。 CreateDatabaseIfNotExistsの代わりにMigrateDatabaseToLatestVersionにデータベース初期化子を変更しました。

Database.SetInitializer<UserDbContext>(new MigrateDatabaseToLatestVersion<UserDbContext, Configuration>()); 
+1

私は同じことに直面していますdbの作成に関する問題。あなたはその行をどこに置いたのですか? Configuration.csファイル 'public Configuration()'?それは私が置いた場所であり、 'update-database'コマンドを実行するたびに2013年にクラッシュします。あなたから聞くのが大好きです。 – Yustme

+0

@Yustme、トピックはかなり古いですが、レコードの場合、 'Context'コンストラクタで' initializer'を設定します。 – Akbari

2

編集: 新しいエラーメッセージが表示されたら、マイグレーションが有効になっていて、既にマイグレーション(データベースの最初の作成)が実行されていて、マイグレーション履歴が失われてしまったためです。自動移行を使用していない場合は、自分自身でデータベースに変更を加えたり変更したりすることはできません。移行を無効にして再度有効にして、移行履歴がクリアされているかどうか確認してください。

最初にDBを作成するために、データの読み込みまたは挿入のどちらかとして呼び出す必要があります。あなたが使用しようとしたときにデータベースが存在しない場合は、データベースを扱う方法をEFに伝えます。私にとっては、http://www.codeproject.com/Tips/411288/Ensure-Your-Code-First-DB-is-Always-Initializedで概説されている方法を使用します。

+0

ご回答ありがとうございます。私はそれがまだ動作しないことを試みた。 – Sanj

+0

それは私のために働いて、奇妙なので、より多くのアイデアのためのDBを初期化する別の方法についてこれをチェックアウト:http://stackoverflow.com/questions/12724320/forcing-code-first-to-always-initialize-a-non-存在するデータベース – Matthew

+0

こんにちはイーグル、私はあなたに従ってきたので、それに応じてすべてを手に入れました。あなたが言及したこと私は自動移行と移行履歴を使用していますが、データベース自体の内部に保存されていますか?それとも、私はここで大きな写真を欠いていますか? DB初期化ルールで自動移行が有効になっているデータベースを理論的に削除すると、データベースが再作成されます。まだ運がない.... – Sanj

関連する問題