Существует ли DataContext в LINQ-to-Entities (НЕ Linq-to-SQL)? - PullRequest
7 голосов
/ 27 сентября 2008

Я недавно задал вопрос о трассировке Linq-to-Entities

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

Ответы [ 4 ]

10 голосов
/ 27 сентября 2008

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

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

LINQ to Entities, класс ObjectContext и модель данных Entity

Запросы LINQ to Entities используют инфраструктуру Object Services . ObjectContext класс является основным для взаимодействия с EDM как Объекты CLR. Разработчик создает экземпляр ObjectQuery через ObjectContext. Универсальный класс ObjectQuery представляет запрос, который возвращает экземпляр или коллекция типизированных сущностей. Объекты сущностей, возвращаемые ObjectQuery отслеживаются контекстом объекта и могут быть обновлены с помощью метод SaveChanges.

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

Однако я бы немного дал понять, что за неправильный ответ, потому что LINQ to SQL ссылается на «сущности», и тот, кто не знаком с EF, вполне может подумать, что знает, о чем вы говорите. 1023 *

Например:

LINQ to SQL и класс DataContext

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

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

5 голосов
/ 27 сентября 2008

Очевидно, LinqToEntities использует ObjectContext вместо DataContext.

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


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

1 голос
/ 06 января 2009

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

В VS это видно в Добавить элемент-> Модель данных сущности ADO.NET

0 голосов
/ 03 октября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...