Entity Framework 6 Создать модель из существующей таблицы

Мы должны поддерживать очень старое приложение. Есть старая часть (весь доступ к данным обрабатывается с помощью хранимых процедур), и, поскольку мои предшественники взяли на себя приложение, они начали создавать новую часть для новых требований, в которой используется Entity Framework 6.

Теперь у заказчика появилось новое требование, которому нужен доступ к одной из таблиц, для которой еще нет EF-модели.

Есть ли простой способ автоматически создать EF-модель из существующей таблицы базы данных? (Мне нужна только эта таблица, а не вся оставшаяся база данных!) Знаете ли вы какой-либо инструмент, который может достичь этого, или мне нужно написать его вручную?

заранее спасибо


person xeraphim    schedule 02.06.2015    source источник
comment
Ниже приведены два разных стиля ответов: один предполагает, что вы используете Code First, а другой предполагает, что вы работаете с файлом Entity Data Model (edmx). Вы не указали желаемый формат модели.   -  person pseudocoder    schedule 02.06.2015
comment
Привет, @pseudocoder, ты прав. Я использую Code First. :-)   -  person xeraphim    schedule 02.06.2015


Ответы (4)


Я использую EF Power Tools, который является подключаемым модулем для Visual Studio.

Загрузить здесь

С помощью плагина вы можете реконструировать свою базу данных, чтобы создавать свои объекты и сопоставления в своем приложении. Несмотря на то, что это сэкономит вам много времени, учтите, что оно не идеально. Возможно, вы захотите просмотреть свои индексы и отношения, поскольку в моем случае некоторые из них отсутствовали.

Чтобы реконструировать вашу базу данных, это так же просто:

Команда Reverse Engineer Code First используется для создания POCO, сопоставления (конфигурации) и производных классов DbContext, основанных на существующей базе данных.

  • Щелкните проект правой кнопкой мыши и выберите Entity Framework —> сначала выполнить обратный инжиниринг кода.

  • Введите информацию о существующей базе данных, на основе которой вы хотите реконструировать Code First.

Вы можете проверить эту ссылку от Microsoft для полного примера:

https://msdn.microsoft.com/en-us/data/jj593170.aspx

ВАЖНО. Начиная с Entity Framework 7 (еще не выпущенной), будет использоваться только подход Code First. Возможно, вы захотите подумать об этом, прежде чем выбирать другой подход, например, Model First. Вы можете узнать больше о: EF7 — что на самом деле означает фраза «Только код сначала»

person Maxime    schedule 02.06.2015
comment
Насколько я понимаю, EF 7 не является прямым преемником EF 6. EF 7 — это совершенно другой путь, чем EF6, и теперь он является облегченной версией EF6. Со временем EF 7 также получит эти функции. Поэтому не полагайтесь на свое решение в зависимости от того, следует ли вам выбрать EF 6 или EF 7. - person jonas; 02.06.2015
comment
Я столкнулся с множеством ограничений, когда унаследовал от проекта Model First. Я прочитал массу сообщений об EF и ограничениях и решил, что мы пойдем на Code Firt. Вы можете проверить блог Роуэна Миллера (romiller.com) и найти других членов команды EF и следить за их работой. У меня нет четкого списка. Я просто Google много! :-) - person Maxime; 02.06.2015
comment
@jonas: Я согласен с тобой. Но если вы собираетесь начать проект СЕЙЧАС, я думаю, вам действительно стоит подумать об этом. Это может быть не прямой преемник, но это не будет другой продукт, и миграция будет возможна. Я бы хотел, чтобы эта миграция была максимально гладкой. - person Maxime; 02.06.2015
comment
Это то, что я искал! Благодарю вас! Хотя было бы неплохо иметь возможность выбирать, для каких таблиц создавать код и карты: P - person xeraphim; 02.06.2015
comment
Если у вас так много таблиц, вы можете создать новую БД из вашей фактической БД только с теми таблицами, которые вам нужны. - person Maxime; 02.06.2015
comment
@Maxime Мы не будем продвигать EF7 в качестве «переходного выпуска» для всех платформ во время первоначального выпуска для поддержки ASP.NET 5. EF7 будет стеком данных по умолчанию для приложений ASP.NET 5, но мы не будем рекомендовать его в качестве альтернативы EF6 в других приложениях, пока у нас не будет реализовано больше функций». источник: wintellect. com/devcenter/tsneed/ - person jonas; 03.06.2015
comment
Ну, вы пропустили следующее предложение: Учитывая, что ASP.NET 5 находится в той же позиции «часть v1 и часть v7», что и EF, отсутствующие функции будут меньшей проблемой. Мы, конечно, будем работать, чтобы сделать их доступными как можно скорее. (источник: goo.gl/ClSruU). Я понимаю, что выпускать будут часто. Возможно, вы захотите прочитать EF7 — v1 или v7? от Роуэна Миллера: goo.gl/Xk1Qrf . Информация довольно полная. :-) - person Maxime; 03.06.2015
comment
@downvoter Есть какая-то конкретная причина, чтобы ее можно было отрегулировать? - person Maxime; 28.09.2017

Откройте файл Entity Data Model (edmx) (отредактируйте: или создайте его, если у вас его еще нет), щелкните правой кнопкой мыши область конструктора в пустой области и выберите «Обновить модель из базы данных».

Выберите правильную строку подключения, если будет предложено, затем выберите вкладку «Добавить» и перейдите к таблицам в вашей базе данных, которые вы хотите добавить, и отметьте их галочкой. Нажмите Готово, и все готово.

person pseudocoder    schedule 02.06.2015

Ознакомьтесь с подключаемым модулем EF Power Tools, который предоставляет вам контекстные меню для Reverse Engineer Code First, а также другие параметры генерации кода.

https://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d

person JConstantine    schedule 02.06.2015

Разве вы не можете просто создать EDMX и выбрать только те таблицы, на которые вы хотите указать, а не всю БД?

Посмотрите Генерировать из базы данных в этой статье.

https://msdn.microsoft.com/en-us/data/jj206878.aspx

person Derek Strickland    schedule 02.06.2015