Создание сущностей, POCO, создать свою собственную БД по коду? - PullRequest
0 голосов
/ 13 февраля 2012

Мне интересно знать, есть ли разумные способы создания собственной БД, CREATE MyDatabase, CREATE Table1 внутри Entity DbContext, mabye InitializeDatabase method?Я знаю, что EF 4.1 с POCO сделает это за меня, но теперь кажется, что если я хочу генерировать некоторые события во время инициализации БД (см. Редактирование), я, вероятно, хочу сгенерировать БД в своем коде.

Скажите, если я хочусообщить о ходе создания БД конечному пользователю, мне нужно создать таблицы базы данных и муравей в моем коде, для этого мне нужно выяснить, как создать базу данных (не таблицу) внутри моего кода.

Iя пробовал:

public void InitializeDatabase(MyContext context)
{

    context.Database.ExecuteSqlCommand("Query to create table");
}

Но проблема в том, что мне нужно сначала создать базу данных для создания таблиц, но как это сделать?Или есть лучшие способы сделать то, что я хочу?

РЕДАКТИРОВАТЬ:

Да, я знаю, что POCO сделает это для меня автоматически, но, к сожалению, кажется, что я делаюнужно / хочу создать базу данных и таблицы по моему коду с помощью POCO, причина в том, что я хочу показать прогресс во время создания / инициализации базы данных?Единственный способ, которым я могу выйти, - это создать базу данных и таблицы с помощью собственного кода и генерировать события после создания каждой таблицы.

Ответы [ 3 ]

0 голосов
/ 13 февраля 2012

То, что вы делаете, похоже на Entity Framework Code First.

Вы можете создать базу данных и таблицы в методе Model Builder Seed, если хотите.

Если ваша единственная цель - сообщить пользователю о прогрессе, вам не нужно создавать базу данных, используя ваши собственные запросы.Вы можете сделать это, используя ModelBuilder OnModelCreating.

0 голосов
/ 14 февраля 2012

Да, я знаю, что POCO сделает это для меня автоматически, но, к сожалению, кажется, что мне действительно нужно создавать базы данных и таблицы самостоятельно, даже с POCO

Нет!По крайней мере, если вы используете Entity Framework 4 (версия, поставляемая с .Net 4.0, для которой требуется Visual Studio 2010. VS 2008 не может использовать .Net 4.0) .

Это называется Code-First разработка .По сути, вы пишете свои классы данных, и Entity Framework автоматически определяет структуру базы данных на основе отношений классов, имен свойств и некоторых необязательных атрибутов, специфичных для EF.Затем он автоматически создает для вас базу данных (хотя поддержка автоматической миграции минимальна ... на данный момент ) .

Есть несколько простых руководств по Code First здесь и здесь .

0 голосов
/ 13 февраля 2012

Entity Framework попытается создать базу данных, настроенную вами в строке подключения.Просто убедитесь, что пользователь, подключающийся к серверу, имеет права на создание базы данных.

...