Вопрос

Недавно я задал вопрос одному вопрос об отслеживании Linq-to-Entities

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

Это было полезно?

Решение

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

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

ПРИВЯЗКА к сущностям, классу ObjectContext и модели данных сущностей

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

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

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

Например:

LINQ для SQL и класса DataContext

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

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

Другие советы

По-видимому, LinqToEntities использует Объектконтекст вместо DataContext.

Забавно, что команда object создала DataContext, а команда data создала ObjectContext (и далее к DataQuery vs ObjectQuery и т.д.). "Именование - это сложно!"


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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top