EntityFramework не создает таблицы - PullRequest
5 голосов
/ 03 апреля 2012

Я уже некоторое время использую EF, всегда в подходе Model-First .Теперь я путешествую по Code-First землям.Дело в том, что у меня были проблемы с автоматическим созданием таблиц.

По некоторым сайтам это возможно.И я попробовал их подход без успеха.

Вот одна из вещей, которые я попробовал: Database.CreateIfNotExists()

Не повезло ...

Моя строка подключенияотлично и работает.Если я добавлю таблицу вручную, она будет работать.Проблема в том, что у меня нет созданной таблицы.Это просто не создает, как мне сказали, будет.

Мои классы правильно оформлены.(Опять же: это работает, когда у меня созданы БД)

Есть предложения?Эта функция действительно работает?

Я использую:

Visual Studio 2010 Professional

EntityFramework 4.3.1 (хотя я пробовал и с 4.1 тоже)

SQL Server 2008 R2

Заранее спасибо.

1 Ответ

6 голосов
/ 03 апреля 2012

Есть три инициализатора базы данных, которые включены в платформу сущностей, все они реализуют интерфейс IDatabaseInitializer<Context>. Это:

  • CreateDatabaseIfNotExist (по умолчанию)
  • DropCreateDatabaseWhenModelChanges
  • DropCreateDatabaseAlways

Как видите, API по умолчанию не имеет инициализатора, который просто создает таблицы, вместо этого он выполняет всю базу данных. Однако есть и другие инициализаторы, созданные людьми, но есть тот, который делает то же самое, что вы хотите.

Это в пакете Nuget EFCodeFirst.CreateTablesOnly

Другой вариант - создать свой собственный инициализатор, если это то, что вам действительно нужно.

...