2008-09-27 7 views
7

Недавно я спросил question about tracing Linq-to-EntitiesЕсть ли DataContext в LINQ-to-Entities (не Linq-to-SQL)?

Я думаю, что one of the answers был не прав, так как они относятся к использованию DataContext. Есть ли DataContext для LINQ-to-Entities? Если да, то как мне его получить?

+1

Для тех, кто видит этот вопрос сейчас (речь идет несколько лет), DataContext следует также не следует путать с DbContext найдено в Entity Framework 4.1 :-) – 2012-08-10 12:48:15

ответ

10

LINQ to Entities использует ObjectContext, а не DataContext.

Вот краткое описание EF:

LINQ to Entities, the ObjectContext Class, and the Entity Data Model

LINQ к Entities запросы использовать объектов инфраструктуры служб. Класс объектаContext является основным классом для взаимодействия с EDM как Объекты CLR. Разработчик конструирует экземпляр ObjectQuery через объект Object12online. Общий класс ObjectQuery представляет запрос, который возвращает экземпляр или набор типизированных объектов. Объекты Entity, возвращаемые ObjectQuery отслеживаются контекстом объектов и могут быть обновлены с помощью метода SaveChanges .

Он даже не работает так же, как DataContext в LINQ to SQL. Хотя верно, что они оба управляют изменениями соединения и отслеживания, но они отличаются тем, как они моделируют структуры данных и отношения.

Я бы дал плакат с этим неправильным ответом, хотя LINQ to SQL ссылается на «сущности», и кто-то, не знакомый с EF, может очень хорошо подумать, что они знают, о чем вы говорите.

Например:

LINQ to SQL and the DataContext Class

DataContext является источником всех субъектов отображенных через соединение с базой данных. Она отслеживает изменения, что вы сделали, чтобы все собранные сущностям и поддерживает «кэш идентичности», который гарантирует, что объекты извлекаются более чем один раз представлены с помощью же объекта экземпляра.

Это может сбить с толку.

5

По-видимому, LinqToEntities использует ObjectContext вместо DataContext.

Весьма весело, что команда объекта создала DataContext, а команда данных создала объект ObjectContext (и на DataQuery vs ObjectQuery и т. Д.). «Именование жестко!»


Обновление для .NET 4 с EF4.1, вы также можете быть заинтересованы в DbContext при работе с LinqToEntities. См. also.

0

Есть лот этих условных различий синтаксиса. Например. SubmitChanges (L2S) и SaveChanges (L2E). Тем не менее, это будет всего лишь концом различий между этими двумя технологиями.

1

Я думаю, вы могли бы ссылаться на ADO.NET Entity Data Model (файл .edmx - сопоставим с файлом .dbml).

В VS это видно в Добавить item-> ADO.NET Entity Data Model