Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
var query = Context.Cars.AsQueryable();query = query.Where(x=>x.Color == "Yellow");var cars = query.ToList();Запросы с одной записью (как в случае применения
First()/FirstOrDefault()FirstOrDefault()DbContext.SaveChanges()Смешанное выполнение на клиентской и серверной сторонах
В предшествующих версиях EF Core была введена возможность смешивания выполнения на стороне сервера и на стороне клиента. Это означало, что где-то в середине оператора LINQ можно было бы вызвать функцию C# и по существу свести на нет все преимущества, описанные в предыдущем разделе. Часть до вызова функции C# выполнится на стороне сервера, но затем все результаты (в данной точке запроса) доставляются на сторону клиента и остаток запроса будет выполнен как LINQ to Objects. В итоге возможность смешанного выполнения привнесла больше проблем, нежели решила, и в выпуске EF Core 3.1 такая функциональность была изменена. Теперь выполнять на стороне клиента можно только последний узел оператора LINQ.
Сравнение отслеживаемых и неотслеживаемых запросов
При чтении информации из базы данных в экземпляр
DbSet<T>ChangeTrackerChangeTrackerОднако временами из базы данных необходимо получать данные, отслеживать которые с помощью
ChangeTrackerЧтобы загрузить экземпляр
DbSet<T>ChangeTrackerAsNoTracking()ChangeTrackerCarChangeTrackerpublic virtual Car? FindAsNoTracking(int id) => Table.AsNoTracking().FirstOrDefault(x => x.Id == id);Преимущество показанного кода в том, что он не увеличивает нагрузку на память, но с ним связан и недостаток: дополнительные вызовы для извлечения той же самой записи
CarCarpublic virtual Car? FindAsNoTracking(int id) => Table.AsNoTrackingWithIdentityResolution().FirstOrDefault(x => x.Id == id);Важные функциональные средства EF Core
Многие функциональные средства из EF 6 были воспроизведены в EF Core, а с каждым выпуском добавляются новые возможности. Множество средств в EF Core усовершенствовано как с точки зрения функциональности, так и в плане производительности. В дополнение к средствам, воспроизведенным из EF 6, инфраструктура EF Core располагает многочисленными новыми возможностями, которые в предыдущей версии отсутствовали. Ниже приведены наиболее важные функциональные средства инфраструктуры EF Core (в произвольном порядке).
На заметку! Фрагменты кода в текущем разделе взяты прямо из завершенной библиотеки доступа к данным
AutoLotОбработка значений, генерируемых базой данных
Помимо отслеживания изменений и генерации запросов SQL из LINQ существенным преимуществом использования EF Core по сравнению с низкоуровневой инфраструктурой ADO.NET является гладкая обработка значений, генерируемых базой данных. После добавления или обновления сущности исполняющая среда EF Core запрашивает любые данные, генерируемые базой, и автоматически обновляет сущность с применением корректных значений. При работе с низкоуровневой инфраструктурой ADO.NET это пришлось бы делать самостоятельно.
Например, таблица
InventoryIdentityIdentityIDENTITY_INSERTInventoryTimeStampTimeStampВ качестве примера возьмем добавление новой записи
CarInventoryCarDbSet<Car>DbContextSaveChanges()var car = new Car{ Color = "Yellow", MakeId = 1, PetName = "Herbie"};Context.Cars.Add(car);Context.SaveChanges();При выполнении метода
SaveChanges()IdTimeStampПохожие книги на "Язык программирования C#9 и платформа .NET5", Троелсен Эндрю
Троелсен Эндрю читать все книги автора по порядку
Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки mir-knigi.info.