Зачем использовать EF 5.X DbContext Generator, когда Edmx выполняет ту же работу?

Я считаю, что этот EF 5 dbContext сложно понять.

В VisualStudio 2012, когда я выбираю

Project > Add New item > ADO.Net Entity Data Model

и выберите файл базы данных AdventureWorks, он создает файл edmx (после того, как я попрошу скопировать файл базы данных локально).

Теперь, теперь, я могу теперь запускать запросы, например.

AdventureWorks_DataEntities entities = new AdventureWorks_DataEntities
var query = from p in entities.Products
            where p.ListPrice >= 0
            select p;

Что меня смущает, почему тогда я использую

Project > Add New Item > EF 5.X DBcontext Generator

Это так, что я могу привязать свои WPF-элементы к таблицам базы данных? но мой запрос работает, могу ли я не просто привязываться к объектам edmx, ведь я могу "видеть" таблицы, такие как Product.cs, которые уже были отображены.

Если это правильно, правильно ли сказать, что использование EntityFramework - это двухэтапный процесс

Вопрос Часть 1:

Шаг 1: добавьте новый файл edmx, сгенерированный из базы данных

Шаг 2: добавьте новый DbContext, который автоматически обнаружит вышеупомянутый файл edmx и предоставит dbcontext, к которому можно привязать элементы управления, такие как datagrids и т.д.

Вопрос Part2:

Я уже могу видеть Product.cs в моей модели edmx, которая была отображена из таблицы Продукт на шаге 1, почему я не могу привязать свои элементы управления WPF прямо к этому, почему нужно сделать шаг 2 выше?

Спасибо

Ответы

Ответ 1

Когда вы добавляете новую "ADO.NET Entity Data Model", помимо создания EDMX, он также создает для вас DbContext, это "AdventureWorks_DataEntities".

Таким образом, вам не нужно добавлять "EF 5.X DBcontext Generator", это уже существует в вашем проекте. Если в Visual Studio вы нажмете на стрелку слева от вашего .edmx файла, чтобы развернуть его, вы увидите несколько файлов. Два из них заканчиваются на ".tt". Это шаблоны T4, которые отвечают за создание объектов модели и DbContext автоматически при изменении EDMX.

Надеемся, что это прояснит концепции, чтобы ответить на ваши вопросы напрямую:

Вопрос 1: вам нужен только шаг 1, "AdventureWorks_DataEntities" - это ваш DbContext. Если вы откроете файл "AdventureWorks_DataEntities.cs", вы увидите, что этот класс наследуется от DbContext.

Вопрос 2. Это другой вопрос. Вы должны открыть отдельный запрос о том, как связать WPF с Entity Framework. Прежде чем вы это сделаете, я предлагаю вам сначала искать в Интернете, так как есть много ресурсов, объясняющих это. Например, эта статья MSDN: http://msdn.microsoft.com/en-us/data/jj574514.aspx