Недавно я задал вопрос о трассировке Linq-to-Entities.
Я думаю, что один из ответов был неправильным, поскольку они ссылаются на использование Контекст данных. Существует ли DataContext для LINQ-to-Entities? Если да, то как мне его получить?
Недавно я задал вопрос о трассировке Linq-to-Entities.
Я думаю, что один из ответов был неправильным, поскольку они ссылаются на использование Контекст данных. Существует ли DataContext для LINQ-to-Entities? Если да, то как мне его получить?
LINQ to Entities использует ObjectContext, а не DataContext.
Вот краткое описание EF:
LINQ to Entities, класс ObjectContext и модель данных сущности
Запросы LINQ to Entities используют инфраструктуру Object Services. Класс ObjectContext является основным классом для взаимодействия с EDM как с объектами CLR. Разработчик создает экземпляр ObjectQuery через ObjectContext. Универсальный класс ObjectQuery представляет запрос, который возвращает экземпляр или набор типизированных сущностей. Объекты Entity, возвращаемые ObjectQuery, отслеживаются контекстом объекта и могут быть обновлены с помощью метода SaveChanges.
Он даже не работает так же, как DataContext в LINQ to SQL. Хотя они и управляют подключением, и отслеживают изменения, они различаются тем, как моделируют структуры данных и отношения.
Тем не менее, я бы дал плакату с этим неправильным ответом некоторую слабину, потому что LINQ to SQL действительно ссылается на «сущности», и кто-то, не знакомый с EF, вполне может все еще думать, что знает, о чем вы говорите.
Например:
LINQ to SQL и класс DataContext
DataContext — это источник всех сущностей, отображаемых через соединение с базой данных. Он отслеживает изменения, внесенные вами во все извлеченные объекты, и поддерживает "кэш удостоверений", гарантирующий, что объекты, извлеченные более одного раза, представлены одним и тем же объектом. экземпляр.
Это может сбивать с толку.
Судя по всему, LinqToEntities использует ObjectContext вместо Контекст данных.
Забавно, что команда, занимающаяся объектами, создала DataContext, а команда, работающая с данными, создала ObjectContext (и на DataQuery против ObjectQuery и т. д.) «Именование — это сложно!»
Обновление, для .net 4 с EF4.1 вас также может заинтересовать DbContext при работе с LinqToEntities. См. также .
Я думаю, вы могли бы иметь в виду модель данных объекта ADO.NET (файл .edmx - сопоставим с файлом .dbml).
В VS это видно в Добавить элемент->Модель данных сущности ADO.NET.
Существует много этих произвольных синтаксических различий. Например. Отправить изменения (L2S) и сохранить изменения (L2E). Тем не менее, это было бы лишь верхушкой различий между двумя технологиями.