1

SQL Server CEを使用して、最初のEntity Frameworkコードの最初のプロジェクトを正常に作成しました。データベーステーブルは自動的に作成され、すべて正常でした。SQL Server 2008でEntity Frameworkコードの最初のデータベースを設定する

私は作成したSQL Serverデータベースを指すように接続文字列を変更し、テーブルを自動生成することを期待していました。それはなかったし、代わりに存在しないテーブルについて不平を言った。

読んだ後、App_Startメソッドにイニシャライザを追加する必要があることがわかりました。

は、私が試した:

// Method 1 
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<EFContext>()); 

しかし、それは、モデルが変わっていた場合発見するEdmMetaDataテーブルを見つけることができなかったので、これが最初では動作しませんでした。

は、だから私は追加してみました:

// Method 2 
Database.SetInitializer(new CreateDatabaseIfNotExists<EFContext>()); 

をしかし、私は既にデータベースを作成したいので、これは動作しませんでした、と私は、データベースを削除するとき、それはまだ動作しませんでしたので、私がログインされたユーザーデータベースの作成権限がないためです。

私は最終的に試してみました:

// Method 3 
Database.SetInitializer(new DropCreateDatabaseAlways<EFContext>()); 

働いたが、私は本当にデシベル毎回ドロップしたくありません。だからそれが走ってEdmMetaDataテーブルを追加したら、私はそれをメソッド1に置き換え、今はうまくいきます。

この方法は機能しますが、SQL Server CEを使用していたときと同じくらいエレガントではなく、この方法を使用することを示唆しているユーザーが見つかりませんでした。

私は何かを見逃していますが、これを行うにはより簡単でよりエレガントな方法がありますか?

答えて

1

方法1と2は、データベースがまだ存在しないと予想します。データベースを手動で作成する場合は機能しません。既存のデータベースにテーブルを作成するためにEFが必要な場合は、custom database initializerを作成する必要があります。