2012-06-24 2 views
1

Хорошо, я немного глуп, потому что мне нужно это задавать, но я думаю, что мое понимание внутренней работы Entity Framework отсутствует.Получить DbContext для объектов

Я хотел бы поэкспериментировать с работой с DbContext. У меня есть существующее приложение ASP.NET MVC с использованием EF 4.2. Я могу получить свои объекты, используя:

var context = new MyEntities(); 

И это работает отлично.

Но как, черт возьми, я получаю те же данные, представленные DbContext?

+0

Можете ли вы немного подробнее остановиться? Что такое MyEntities? Это реализация DbContext? Что вы подразумеваете под «как получить одни и те же данные»? –

+0

MyEntities - это класс, созданный автоматически из файла EDMX, который импортировал данные схемы из моей базы данных. –

+0

Или, по-другому: у меня есть база данных. Как получить доступ к моей базе данных с помощью DbContext. –

ответ

4

Так что, я думаю, вы используете генератор кода по умолчанию, предоставляемый дизайнером EDMX, - он будет использовать ObjectContext и тяжелые весовые EntityObject объекты.

Если вы хотите использовать DbContext вы должны:

  • Выключите этот генерации кода по умолчанию - в окне свойств удалить Выборочная инструмент для EDMX файл
  • Скачать и установить DbContext T4 generator (вы можете получить его непосредственно из диспетчера расширений в Visual Studio)
  • В дизайнере EF выберите Добавить код Generation Item из контекстного меню на поверхности конструктора (не на объекте)

Теперь EF добавит в проект два файла .tt. Один из них будет отвечать за создание нового класса для каждого объекта или сложного типа, определенного в вашем EDMX-файле, а второй будет отвечать за создание класса, производного от DbContext, и выставление наборы для всех типов ваших лиц

+0

Основываясь на том, что я знаю, это звучит как правильный ответ. Но мне трудно понять, что здесь происходит. У меня есть книга ASP.NET MVC, но мне не нравится, как они реализуют репозиторий. Можете ли вы порекомендовать какой-либо материал для чтения, который обеспечит более глубокое понимание того, что происходит здесь под обложками? Благодарю. –

+1

Для этого нужен только файл EDMX, который на самом деле представляет собой сложный XML-код и использует преобразование T4 для создания файлов кода (вы даже можете изменить преобразование, поскольку оно является частью вашего проекта). Больше ничего. Он не имеет отношения к репозиториям и другим шаблонам. Это простое и настраиваемое поколение ваших сущностей и контекстных классов, которые следуют правилам, требуемым EF. –

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