6

私はしばらくの間EFを使用してきましたが、常にモデルファーストのアプローチで使用しています。今、私はコードファーストの土地を冒険しています。問題は、自動テーブル作成で問題が発生していることです。

いくつかのサイトによると、それは可能です。そして、私は彼らのアプローチを試みましたが、成功しませんでした。

これが私が試したことの1つです:Database.CreateIfNotExists()

運がない...

私の接続文字列は完璧で機能しています。テーブルを手動で追加すると、機能します。問題は、テーブルを作成していない場合です。私が言ったようにそれは作成されません。

私のクラスは正しく装飾されています。(繰り返しますが、DBを作成すると機能します)

助言がありますか?この機能は本当に機能しますか?

私が使用しているもの:

Visual Studio 2010 Professional

EntityFramework 4.3.1(4.1でも試しましたが)

SQL Server 2008 R2

前もって感謝します。

4

1 に答える 1

8

エンティティフレームワークに含まれている3つのデータベース初期化子があり、それらはすべてIDatabaseInitializer<Context>インターフェイスを実装しています。彼らです:

  • CreateDatabaseIfNotExist(デフォルト)
  • DropCreateDatabaseWhenModelChanges
  • DropCreateDatabaseAlways

ご覧のとおり、デフォルトのAPIには、テーブルを作成するだけのイニシャライザーはなく、データベース全体を作成します。しかし、人々が作成した他の初期化子があります、あなたが望むのとまったく同じことをするものがあります。

Nugetパッケージに含まれていますEFCodeFirst.CreateTablesOnly

もう1つのオプションは、本当に必要な場合は、独自の初期化子を作成することです。

于 2012-04-03T04:57:06.323 に答える