2012-04-12 2 views
56

У меня есть существующая база данных. Я надеялся, что есть способ генерировать файлы классов из этой базы данных. Тем не менее, похоже, я вижу много генерации базы данных из файлов классов.Entity Framework - классы генерации

Есть ли способ генерировать файлы классов из существующей базы данных с использованием Entity Framework? Если да, то как? Может ли кто-нибудь указать мне на учебник?

+0

См Это http://stackoverflow.com/questions/9876619/ entity-framework-5-0-beta-will-a-dbcontext-code-generation-template-be-обеспечить – AmirHossein

ответ

113

1) Сначала вам нужно сгенерировать модель EDMX, используя вашу базу данных. Для этого вам следует добавить новый объект в свой проект:

  • Выберите ADO.NET Entity Data Model из списка Шаблоны.
  • На странице «Выбор модели» выберите вариант «Создать из базы данных» и нажмите «Далее».
  • Выберите вашу базу данных.
  • На странице «Выбор объектов базы данных» проверьте таблицы. Выберите «Виды» или «Хранимые процедуры», если вам нужно.

Итак, у вас есть файл Model1.edmx в вашем проекте.

2) Для того, чтобы генерировать классы с помощью вашей модели:

  • Откройте EDMX модель дизайнера.
  • На поверхности дизайна Щелкните правой кнопкой мыши -> Добавить код Generation Item ...
  • Выберите онлайн-шаблоны.
  • Выбрать EF 4.x DbContext Generator for C#.
  • Нажмите «Добавить».

Обратите внимание, что два элемента будут добавлены к вашему проекту:

  • Model1.tt (Этот шаблон генерирует очень простые классы POCO для каждого объекта в вашей модели)
  • Model1.Context.tt (Этот шаблон генерирует производный DbContext для использовать для запросов и хранение данных)

3) Чтение/запись данных пример:

var dbContext = new YourModelClass(); //class derived from DbContext 
var contacts = from c in dbContext.Contacts select c; //read data 
contacts.FirstOrDefault().FirstName = "Alex"; //edit data 
dbContext.SaveChanges(); //save data to DB 

Не забывайте, что вам нужна 4.x версия EntityFramework. Вы можете скачать EF 4.1 здесь: Entity Framework 4.1.

+0

Следуя вашим инструкциям, я создал оба типа: Model1.tt' и 'Model1.Context.tt', но, Я не мог понять, как я могу сделать 3 шага. Можете ли вы мне помочь? Я скомпилировал, чтобы увидеть, есть ли у меня какой-либо результат, но нет удачи = ( –

+0

Вы проверили, были ли созданы ваши классы POCO и Контекст? Или вы получаете некоторые ошибки на шаге 2? – algreat

+0

Оба в порядке, я создал ссылку на EF, используя Nuget Нет ошибок, Build Succeeded. –

15

Я нашел очень хорошее решение. Microsoft выпустила бета-версию Entity Framework Power Tools: Entity Framework Power Tools Beta 2

Здесь вы можете создавать классы POCO, полученные DbContext и Code First для существующей базы данных за несколько кликов. Очень мило!

После установки в Visual Studio будут добавлены некоторые параметры контекстного меню.

Щелкните правой кнопкой мыши на проекте C#.Выберите Entity Каркасно> перепроектирует Code First (Формирует классы POCO, полученный DbContext и код Первого отображения для существующей базы данных):

Visual Studio Context Menu

Затем выберите базу данных и нажмите кнопку OK. Это все! Это очень просто.

1
  1. Открыть модель EDMX
  2. правой кнопкой мыши -> Обновить модель из браузера -> Stored Procedure -> Выберите хранимую процедуру -> Finish
  3. Смотрите Модель Browser выскакивают рядом обозревателе решений.
  4. Перейти к Функция импорта -> правой кнопкой мыши на вашей хранимой процедуры -> Добавить функцию импорта
  5. Выберите объекты под возвращающие Коллекция -> Выберите имя Entity из выпадающего
  6. Постройте решение.
+0

Было бы лучше описать этот процесс. например Что вы делаете (шаг за шагом) и почему? –

Смежные вопросы