Подтвердить что ты не робот

Назначение EF 6.x DbContext Generator

У меня есть веб-приложение, которое я построил с использованием Linq-to-SQL, и я хочу обновить его до Linq-to-EF. Я рассмотрел некоторые учебники и, в основном, в первом сценарии базы данных, вы создаете модель данных Entity Data ADO.NET и оттуда выбираете, какие таблицы включать в модель (очень похожую на linq-to-sql). Теперь в окне "Добавить новый элемент" я вижу, что есть еще одна опция, которая заключается в создании генератора EF 6.x DbContext Generator. enter image description here

Какова цель DbContext Generator по сравнению с созданием только модели данных Entity Data ADO.NET(первый вариант окна) и для чего нужен генератор DbContext? Кажется, он создает текстовый файл; что мне с ним делать?

4b9b3361

Ответ 1

Если у вас уже есть база данных, первый вариант лучше, учитывая, что подход очень похож на тот, который вы уже работаете в LinqToSQL. Файл .EDMX также может предоставить вам графическую визуализацию вашей базы данных, и вам не нужно беспокоиться ни о чем другом.

Ответ 2

Я думаю, что это важная статья, касающаяся EntityFramework и генераторов:

Статья MSDN

Вот введение в статью:

Когда вы создаете модель с помощью конструктора Entity Framework, ваши классы и производный контекст автоматически генерируются для вас. В дополнение к генерации кода по умолчанию мы также предоставляем несколько шаблонов, которые можно использовать для настройки генерируемого кода. Эти шаблоны предоставляются в виде текстовых шаблонов T4, позволяя вам при необходимости настраивать шаблоны.

Обычно эти генераторы не преобразуют ваш модуль db из LinqToSQL в EntityFramework.
Если у вас есть полная база данных (предположим, что у вас она есть модуль на основе Linq2SQL), я бы рекомендовал вам использовать ADO.NET Entity Data Model (добавление нового элемента: EDMX) и выбрать "Генерировать из базы данных" (мастер VS после добавления).

Ответ 3

Генератор DbContext заменяет ObjectContext гораздо более простым и коротким кодом для подключения объектов Entity к объектам базы данных. Единая таблица базы данных с 30 полями представлена ​​примерно 800 строками кода как ObjectContext, но около 40 строк легко понимаемого кода как DbContext и класса, сгенерированного DbContextGenerator.

Генератор DbContext создает два файла -

  • создание DbContext с подробными данными строки подключения и DbSet для каждой таблицы.

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

Пошаговое руководство доступно на http://msdn.microsoft.com/en-US/data/jj206878

Ответ 4

Есть два способа сделать БД. Во-первых, один включает в себя файл EDMX, другой - обратную инженерию для кодирования первых POCO.

Когда у вас есть файл EDMX, вы устанавливаете генераторы, которые используются для создания ваших объектов, и есть несколько вариантов. Один из них - DbContext, другой - генератор EntityObject, который генерирует объекты на основе ObjectContext.

Ответ 5

Первый вариант создает файл Model-First для работы с EF (все версии), который, если вы выберете, что вы можете обновить (или построить) вашу EF-модель из существующей базы данных, а если выбрать второй вариант, вам будет дано средства для создания соответствующих файлов для создания решения для работы с Code-First EF.

Согласно моему опыту, второй выбор не является достойным вариантом, и если вы решите работать с Code-First EF, настоятельно рекомендуется открыть чистый файл и свободно писать свои коды и пользоваться максимальной гибкостью, предлагаемой Code-First и их соглашения.