Есть ли DataContext в LINQ-to-Entities (НЕ Linq-to-SQL)?
-
02-07-2019 - |
Вопрос
Недавно я задал вопрос одному вопрос об отслеживании 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).Однако это было бы лишь верхушкой различий между двумя технологиями.