Назначение 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? Кажется, он создает текстовый файл; что мне с ним делать?
Ответы
Ответ 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 и их соглашения.