DbSet<TEntity> Класс

Определение

DbSet<TEntity>Можно использовать для запроса и сохранения экземпляров TEntity . Запросы LINQ к a DbSet<TEntity> будут преобразованы в запросы к базе данных.

Результаты запроса LINQ к элементу DbSet<TEntity> будут содержать результаты, возвращенные из базы данных, и могут не отражать изменения, внесенные в контекст, который не был сохранен в базе данных. Например, результаты не будут содержать вновь добавленные сущности и могут содержать сущности, помеченные для удаления.

В зависимости от используемой базы данных некоторые части запроса LINQ к a DbSet<TEntity> могут быть вычислены в памяти, а не преобразованы в запрос базы данных.

DbSet<TEntity> Обычно объекты получаются из DbSet<TEntity> свойства в производном DbContext или из Set<TEntity>() метода.

Entity Framework Core не поддерживает выполнение нескольких параллельных операций в одном экземпляре DbContext, включая параллельное выполнение асинхронных запросов и любое явное использование экземпляра из нескольких потоков одновременно. Таким образом, всегда ожидаются асинхронные вызовы немедленно или используются отдельные экземпляры DbContext для операций, выполняемых параллельно. Дополнительные сведения см. в статье предотвращение проблем с потоковыми DbContextми .

public abstract class DbSet<TEntity> : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Query.Internal.IAsyncEnumerableAccessor<TEntity>, System.Collections.Generic.IEnumerable<TEntity>, System.Linq.IQueryable<TEntity> where TEntity : class
public abstract class DbSet<TEntity> : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Query.Internal.IAsyncEnumerableAccessor<TEntity>, System.Collections.Generic.IEnumerable<TEntity>, System.ComponentModel.IListSource, System.Linq.IQueryable<TEntity> where TEntity : class
public abstract class DbSet<TEntity> : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, System.Collections.Generic.IAsyncEnumerable<TEntity>, System.Collections.Generic.IEnumerable<TEntity>, System.ComponentModel.IListSource, System.Linq.IQueryable<TEntity> where TEntity : class
public abstract class DbSet<TEntity> : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, System.Collections.Generic.IEnumerable<TEntity>, System.ComponentModel.IListSource, System.Linq.IQueryable<TEntity> where TEntity : class
type DbSet<'Entity (requires 'Entity : null)> = class
    interface IQueryable<'Entity (requires 'Entity : null)>
    interface seq<'Entity (requires 'Entity : null)>
    interface IEnumerable
    interface IQueryable
    interface IAsyncEnumerableAccessor<'Entity (requires 'Entity : null)>
    interface IInfrastructure<IServiceProvider>
type DbSet<'Entity (requires 'Entity : null)> = class
    interface IQueryable<'Entity (requires 'Entity : null)>
    interface seq<'Entity (requires 'Entity : null)>
    interface IEnumerable
    interface IQueryable
    interface IAsyncEnumerableAccessor<'Entity (requires 'Entity : null)>
    interface IInfrastructure<IServiceProvider>
    interface IListSource
type DbSet<'Entity (requires 'Entity : null)> = class
    interface IQueryable<'Entity (requires 'Entity : null)>
    interface seq<'Entity (requires 'Entity : null)>
    interface IEnumerable
    interface IQueryable
    interface IAsyncEnumerable<'Entity (requires 'Entity : null)>
    interface IInfrastructure<IServiceProvider>
    interface IListSource
type DbSet<'Entity (requires 'Entity : null)> = class
    interface IQueryable<'Entity (requires 'Entity : null)>
    interface seq<'Entity (requires 'Entity : null)>
    interface IEnumerable
    interface IQueryable
    interface IInfrastructure<IServiceProvider>
    interface IListSource
Public MustInherit Class DbSet(Of TEntity)
Implements IAsyncEnumerableAccessor(Of TEntity), IEnumerable(Of TEntity), IInfrastructure(Of IServiceProvider), IQueryable(Of TEntity)
Public MustInherit Class DbSet(Of TEntity)
Implements IAsyncEnumerableAccessor(Of TEntity), IEnumerable(Of TEntity), IInfrastructure(Of IServiceProvider), IListSource, IQueryable(Of TEntity)
Public MustInherit Class DbSet(Of TEntity)
Implements IAsyncEnumerable(Of TEntity), IEnumerable(Of TEntity), IInfrastructure(Of IServiceProvider), IListSource, IQueryable(Of TEntity)
Public MustInherit Class DbSet(Of TEntity)
Implements IEnumerable(Of TEntity), IInfrastructure(Of IServiceProvider), IListSource, IQueryable(Of TEntity)

Параметры типа

TEntity

Тип сущности, с которой выполняется операция в этом наборе.

Наследование
DbSet<TEntity>
Производный
Реализации
IInfrastructure<IServiceProvider> Microsoft.EntityFrameworkCore.Query.Internal.IAsyncEnumerableAccessor<TEntity> IEnumerable<T> IEnumerable<TEntity> IEnumerable IQueryable IQueryable<TEntity> IListSource IAsyncEnumerable<TEntity>

Комментарии

Дополнительные сведения см. в статьях DbContext Lifetime, Configuration и Initialization, запрос данных с помощью EF Coreи Изменение отслеживания .

Конструкторы

DbSet<TEntity>()

Свойства

EntityType

IEntityTypeМетаданные, связанные с этим набором.

Local

Возвращает объект LocalView<TEntity> , представляющий локальное представление всех добавленных, неизмененных и измененных сущностей в этом наборе.

Это локальное представление остается синхронизированным по мере добавления или удаления сущностей из контекста. Аналогичным образом добавляемые или удаляемые из этого локального представления сущности автоматически добавляются в контекст или удаляются из контекста.

Это свойство может использоваться для привязки данных путем заполнения набора данными, например с помощью Load<TSource>(IQueryable<TSource>) метода расширения, а затем привязки к локальным данным через это свойство путем вызова ToObservableCollection() для привязки WPF или ToBindingList() для WinForms.

Обратите внимание, что этот метод вызывает, DetectChanges() Если AutoDetectChangesEnabled для свойства не задано значение false .

Методы

Add(TEntity)

Начинает отслеживание данной сущности и любых других достижимых сущностей, которые еще не отслеживаются, в Added состоянии таким, что они будут вставлены в базу данных при SaveChanges() вызове.

Используется State для установки состояния только одной сущности.

AddAsync(TEntity, CancellationToken)

Начинает отслеживание данной сущности и любых других достижимых сущностей, которые еще не отслеживаются, в Added состоянии таким, что они будут вставлены в базу данных при SaveChanges() вызове.

Этот метод является асинхронным только для того, чтобы разрешить для асинхронного доступа к базе данных специальные генераторы значений, такие как, используемые "Microsoft. EntityFrameworkCore. Metadata. Склсервервалуеженератионстратеги. Секуенцехило". Во всех остальных случаях следует использовать не асинхронный метод.

Используется State для установки состояния только одной сущности.

AddRange(IEnumerable<TEntity>)

Начинает отслеживание заданных сущностей и любых других достижимых сущностей, которые еще не отслеживаются, в Added состоянии таким, что они будут вставлены в базу данных при SaveChanges() вызове.

AddRange(TEntity[])

Начинает отслеживание заданных сущностей и любых других достижимых сущностей, которые еще не отслеживаются, в Added состоянии таким, что они будут вставлены в базу данных при SaveChanges() вызове.

AddRangeAsync(IEnumerable<TEntity>, CancellationToken)

Начинает отслеживание заданных сущностей и любых других достижимых сущностей, которые еще не отслеживаются, в Added состоянии таким, что они будут вставлены в базу данных при SaveChanges() вызове.

Этот метод является асинхронным только для того, чтобы разрешить для асинхронного доступа к базе данных специальные генераторы значений, такие как, используемые "Microsoft. EntityFrameworkCore. Metadata. Склсервервалуеженератионстратеги. Секуенцехило". Во всех остальных случаях следует использовать не асинхронный метод.

AddRangeAsync(TEntity[])

Начинает отслеживание заданных сущностей и любых других достижимых сущностей, которые еще не отслеживаются, в Added состоянии таким, что они будут вставлены в базу данных при SaveChanges() вызове.

Этот метод является асинхронным только для того, чтобы разрешить для асинхронного доступа к базе данных специальные генераторы значений, такие как, используемые "Microsoft. EntityFrameworkCore. Metadata. Склсервервалуеженератионстратеги. Секуенцехило". Во всех остальных случаях следует использовать не асинхронный метод.

AsAsyncEnumerable()

Возвращает этот объект с типом IAsyncEnumerable<T> .

AsQueryable()

Возвращает этот объект с типом IQueryable<T> .

Это удобный метод для устранения неоднозначности методов расширения в том же пространстве имен, которое расширяет оба интерфейса.

Attach(TEntity)

Начинает отслеживание заданной сущности и записей, достижимых из данной сущности по Unchanged умолчанию по состоянию, но ниже приведены случаи, когда будет использоваться другое состояние.

Как правило, взаимодействие с базой данных не выполняется до тех пор, пока SaveChanges() не будет вызван метод.

Рекурсивный поиск свойств навигации выполняется для поиска достижимых сущностей, которые еще не отслеживается контекстом. Все найденные сущности будут записаны в контексте.

Для типов сущностей с созданными ключами, если для сущности задано значение первичного ключа, он будет записан в Unchanged состояние. Если значение первичного ключа не задано, оно будет записано в Added состояние. Это гарантирует, что будут вставлены только новые сущности. Сущность считается, что значение первичного ключа устанавливается, если свойство первичного ключа имеет значение, отличное от значения по умолчанию CLR для типа свойства.

Для типов сущностей без созданных ключей состояние всегда равно Unchanged .

Используется State для установки состояния только одной сущности.

AttachRange(IEnumerable<TEntity>)

Начинает отслеживание заданных сущностей и записей, достижимых из заданных сущностей с помощью Unchanged состояния по умолчанию, но ниже приведены случаи, когда будет использоваться другое состояние.

Как правило, взаимодействие с базой данных не выполняется до тех пор, пока SaveChanges() не будет вызван метод.

Рекурсивный поиск свойств навигации выполняется для поиска достижимых сущностей, которые еще не отслеживается контекстом. Все найденные сущности будут записаны в контексте.

Для типов сущностей с созданными ключами, если для сущности задано значение первичного ключа, он будет записан в Unchanged состояние. Если значение первичного ключа не задано, оно будет записано в Added состояние. Это гарантирует, что будут вставлены только новые сущности. Сущность считается, что значение первичного ключа устанавливается, если свойство первичного ключа имеет значение, отличное от значения по умолчанию CLR для типа свойства.

Для типов сущностей без созданных ключей состояние всегда равно Unchanged .

Используется State для установки состояния только одной сущности.

AttachRange(TEntity[])

Начинает отслеживание заданных сущностей и записей, достижимых из заданных сущностей с помощью Unchanged состояния по умолчанию, но ниже приведены случаи, когда будет использоваться другое состояние.

Как правило, взаимодействие с базой данных не выполняется до тех пор, пока SaveChanges() не будет вызван метод.

Рекурсивный поиск свойств навигации выполняется для поиска достижимых сущностей, которые еще не отслеживается контекстом. Все найденные сущности будут записаны в контексте.

Для типов сущностей с созданными ключами, если для сущности задано значение первичного ключа, он будет записан в Unchanged состояние. Если значение первичного ключа не задано, оно будет записано в Added состояние. Это гарантирует, что будут вставлены только новые сущности. Сущность считается, что значение первичного ключа устанавливается, если свойство первичного ключа имеет значение, отличное от значения по умолчанию CLR для типа свойства.

Для типов сущностей без созданных ключей состояние всегда равно Unchanged .

Используется State для установки состояния только одной сущности.

Find(Object[])

Обнаруживает сущность с указанными значениями первичного ключа. Если сущность с заданными значениями первичного ключа отслеживается в контексте, то она возвращается немедленно, без выполнения запроса к базе данных. В противном случае выполняется запрос к базе данных для сущности с заданными значениями первичного ключа, и эта сущность, если она найдена, присоединяется к контексту и возвращается. Если сущность не найдена, возвращается значение null.

FindAsync(Object[])

Обнаруживает сущность с указанными значениями первичного ключа. Если сущность с заданными значениями первичного ключа отслеживается в контексте, то она возвращается немедленно, без выполнения запроса к базе данных. В противном случае выполняется запрос к базе данных для сущности с заданными значениями первичного ключа, и эта сущность, если она найдена, присоединяется к контексту и возвращается. Если сущность не найдена, возвращается значение null.

FindAsync(Object[], CancellationToken)

Обнаруживает сущность с указанными значениями первичного ключа. Если сущность с заданными значениями первичного ключа отслеживается в контексте, то она возвращается немедленно, без выполнения запроса к базе данных. В противном случае выполняется запрос к базе данных для сущности с заданными значениями первичного ключа, и эта сущность, если она найдена, присоединяется к контексту и возвращается. Если сущность не найдена, возвращается значение null.

GetAsyncEnumerator(CancellationToken)

Возвращает, IAsyncEnumerator<T> который при перечислении будет асинхронно выполнять запрос к базе данных.

Remove(TEntity)

Начинает отслеживание заданной сущности в Deleted состоянии таким, что оно будет удалено из базы данных при SaveChanges() вызове.

RemoveRange(IEnumerable<TEntity>)

Начинает отслеживание заданных сущностей в Deleted таком состоянии, чтобы при вызове они удалялись из базы SaveChanges() .

RemoveRange(TEntity[])

Начинает отслеживание заданных сущностей в Deleted таком состоянии, чтобы при вызове они удалялись из базы SaveChanges() .

Update(TEntity)

Начинает отслеживание заданной сущности и записей, достижимых из данной сущности по Modified умолчанию по состоянию, но ниже приведены случаи, когда будет использоваться другое состояние.

Как правило, взаимодействие с базой данных не выполняется до тех пор, пока SaveChanges() не будет вызван метод.

Рекурсивный поиск свойств навигации выполняется для поиска достижимых сущностей, которые еще не отслеживается контекстом. Все найденные сущности будут записаны в контексте.

Для типов сущностей с созданными ключами, если для сущности задано значение первичного ключа, он будет записан в Modified состояние. Если значение первичного ключа не задано, оно будет записано в Added состояние. Это гарантирует, что новые сущности будут вставлены, а существующие сущности будут обновлены. Сущность считается, что значение первичного ключа устанавливается, если свойство первичного ключа имеет значение, отличное от значения по умолчанию CLR для типа свойства.

Для типов сущностей без созданных ключей состояние всегда равно Modified .

Используется State для установки состояния только одной сущности.

UpdateRange(IEnumerable<TEntity>)

Начинает отслеживание заданных сущностей и записей, достижимых из заданных сущностей с помощью Modified состояния по умолчанию, но ниже приведены случаи, когда будет использоваться другое состояние.

Как правило, взаимодействие с базой данных не выполняется до тех пор, пока SaveChanges() не будет вызван метод.

Рекурсивный поиск свойств навигации выполняется для поиска достижимых сущностей, которые еще не отслеживается контекстом. Все найденные сущности будут записаны в контексте.

Для типов сущностей с созданными ключами, если для сущности задано значение первичного ключа, он будет записан в Modified состояние. Если значение первичного ключа не задано, оно будет записано в Added состояние. Это гарантирует, что новые сущности будут вставлены, а существующие сущности будут обновлены. Сущность считается, что значение первичного ключа устанавливается, если свойство первичного ключа имеет значение, отличное от значения по умолчанию CLR для типа свойства.

Для типов сущностей без созданных ключей состояние всегда равно Modified .

Используется State для установки состояния только одной сущности.

UpdateRange(TEntity[])

Начинает отслеживание заданных сущностей и записей, достижимых из заданных сущностей с помощью Modified состояния по умолчанию, но ниже приведены случаи, когда будет использоваться другое состояние.

Как правило, взаимодействие с базой данных не выполняется до тех пор, пока SaveChanges() не будет вызван метод.

Рекурсивный поиск свойств навигации выполняется для поиска достижимых сущностей, которые еще не отслеживается контекстом. Все найденные сущности будут записаны в контексте.

Для типов сущностей с созданными ключами, если для сущности задано значение первичного ключа, он будет записан в Modified состояние. Если значение первичного ключа не задано, оно будет записано в Added состояние. Это гарантирует, что новые сущности будут вставлены, а существующие сущности будут обновлены. Сущность считается, что значение первичного ключа устанавливается, если свойство первичного ключа имеет значение, отличное от значения по умолчанию CLR для типа свойства.

Для типов сущностей без созданных ключей состояние всегда равно Modified .

Используется State для установки состояния только одной сущности.

Явные реализации интерфейса

IAsyncEnumerable<TEntity>.GetAsyncEnumerator(CancellationToken)

Возвращает, IAsyncEnumerator<T> который при перечислении будет асинхронно выполнять запрос к базе данных.

IAsyncEnumerableAccessor<TEntity>.AsyncEnumerable

Возвращает, IAsyncEnumerable<T> который при перечислении будет асинхронно выполнять запрос к базе данных.

IEnumerable.GetEnumerator()

Возвращает, IEnumerator который при перечислении будет выполнять запрос к базе данных для загрузки всех сущностей из базы данных.

IEnumerable<TEntity>.GetEnumerator()

Возвращает, IEnumerator<T> который при перечислении будет выполнять запрос к базе данных для загрузки всех сущностей из базы данных.

IInfrastructure<IServiceProvider>.Instance

Возвращает область, IServiceProvider используемую для разрешения служб.

Это свойство предназначено для использования методами расширения, которые должны использовать службы, не предоставляемые напрямую в области открытого API.

IListSource.ContainsListCollection

Возвращает значение, указывающее, является ли коллекция коллекцией объектов System. Collections. IList. Всегда возвращает значение false.

IListSource.GetList()

Этот метод вызывается платформами привязки данных при попытке привязать данные непосредственно к DbSet<TEntity> .

Эта реализация всегда создает исключение, так как привязка непосредственно к a приведет к тому, что DbSet<TEntity> запрос будет отправляться в базу данных каждый раз, когда платформа привязки данных запрашивает содержимое коллекции. Вместо этого загрузите результаты в контекст, например с помощью Load<TSource>(IQueryable<TSource>) метода расширения, а затем выполните привязку к локальным данным через, Local вызвав ToObservableCollection() для привязки WPF или ToBindingList() для WinForms.

IQueryable.ElementType

Возвращает тип элемента IQueryable.

IQueryable.Expression

Возвращает выражение LINQ, которое является IQueryable.

IQueryable.Provider

Возвращает поставщик IQueryable.

Методы расширения

FromSqlRaw<TEntity>(DbSet<TEntity>, String, Object[])

создает запрос LINQ на основе необработанного SQL запроса.

вы можете создать поверх необработанного SQL запроса с помощью операторов LINQ:

context.Blogs.FromSqlRaw("SELECT * FROM root c).OrderBy(b => b.Name)

как и для любого API, который принимает SQL важно параметризовать любые вводимые пользователем данные, чтобы защититься от атак путем внедрения SQL. в строку запроса SQL можно включить заполнители параметров, а затем указать значения параметров в качестве дополнительных аргументов. все значения параметров, которые вы предоставляете, автоматически преобразуются в Cosmos параметр:

context.Blogs.FromSqlRaw(""SELECT * FROM root c WHERE c["Name"] = {0})", userSuppliedSearchTerm)
WithPartitionKey<TEntity>(IQueryable<TEntity>, String)

Укажите ключ секции для секции, используемой для запроса. Требуется при использовании токена ресурса, который предоставляет разрешения на основе ключа секции для проверки подлинности,

AllAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, CancellationToken)

Асинхронно определяет, удовлетворяет ли условию все элементы последовательности.

AnyAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, CancellationToken)

Асинхронно определяет, удовлетворяет ли какой-либо элемент последовательности условию.

AnyAsync<TSource>(IQueryable<TSource>, CancellationToken)

Асинхронно определяет, содержит ли последовательность какие-либо элементы.

AsAsyncEnumerable<TSource>(IQueryable<TSource>)

Возвращает объект IAsyncEnumerable<T> , который может быть перечислен асинхронно.

AsNoTracking<TEntity>(IQueryable<TEntity>)

Средство записи изменений не будет отслеживанию сущностей, возвращаемых запросом LINQ. Если экземпляры сущности изменены, это не будет обнаружено средством записи изменений и SaveChanges() не будет сохранять эти изменения в базе данных.

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

Разрешение идентификации не будет выполнено. Если сущность с указанным ключом находится в другом результате в результирующем наборе, то они будут разными экземплярами.

Поведение отслеживания по умолчанию для запросов можно контролировать с помощью QueryTrackingBehavior .

AsNoTrackingWithIdentityResolution<TEntity>(IQueryable<TEntity>)

Средство записи изменений не будет отслеживанию сущностей, возвращаемых запросом LINQ. Если экземпляры сущности изменены, это не будет обнаружено средством записи изменений и SaveChanges() не будет сохранять эти изменения в базе данных.

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

Разрешение идентификации будет выполнено, чтобы убедиться, что все вхождения сущности с заданным ключом в результирующем наборе представлены одним и тем же экземпляром сущности.

Поведение отслеживания по умолчанию для запросов можно контролировать с помощью QueryTrackingBehavior .

AsTracking<TEntity>(IQueryable<TEntity>)

Возвращает новый запрос, в котором отслеживание изменений будет отследить изменения для всех возвращаемых сущностей. Любые изменения в экземплярах сущностей будут обнаружены и сохранены в базе данных во время SaveChanges() .

Поведение отслеживания по умолчанию для запросов можно контролировать с помощью QueryTrackingBehavior .

AsTracking<TEntity>(IQueryable<TEntity>, QueryTrackingBehavior)

Возвращает новый запрос, в котором отслеживание изменений будет либо отследить изменения, либо не для всех возвращаемых сущностей в зависимости от значения параметра "Track". При отслеживании любые изменения в экземплярах сущностей будут обнаружены и сохранены в базе данных во время SaveChanges() . Если не отслеживать, то при изменении экземпляров сущности отслеживание изменений не будет обнаружено и SaveChanges() не будет сохранять эти изменения в базе данных.

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

Поведение отслеживания по умолчанию для запросов можно контролировать с помощью QueryTrackingBehavior .

AverageAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Decimal>>, CancellationToken)

Асинхронно вычисляет среднее для последовательности значений, получаемой путем вызова функции проекции для каждого элемента входной последовательности.

AverageAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>, CancellationToken)

Асинхронно вычисляет среднее для последовательности значений, получаемой путем вызова функции проекции для каждого элемента входной последовательности.

AverageAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32>>, CancellationToken)

Асинхронно вычисляет среднее для последовательности значений, получаемой путем вызова функции проекции для каждого элемента входной последовательности.

AverageAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int64>>, CancellationToken)

Асинхронно вычисляет среднее для последовательности значений, получаемой путем вызова функции проекции для каждого элемента входной последовательности.

AverageAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Decimal>>>, CancellationToken)

Асинхронно вычисляет среднее для последовательности значений, получаемой путем вызова функции проекции для каждого элемента входной последовательности.

AverageAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Double>>>, CancellationToken)

Асинхронно вычисляет среднее для последовательности значений, получаемой путем вызова функции проекции для каждого элемента входной последовательности.

AverageAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int32>>>, CancellationToken)

Асинхронно вычисляет среднее для последовательности значений, получаемой путем вызова функции проекции для каждого элемента входной последовательности.

AverageAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int64>>>, CancellationToken)

Асинхронно вычисляет среднее для последовательности значений, получаемой путем вызова функции проекции для каждого элемента входной последовательности.

AverageAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Single>>>, CancellationToken)

Асинхронно вычисляет среднее для последовательности значений, получаемой путем вызова функции проекции для каждого элемента входной последовательности.

AverageAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Single>>, CancellationToken)

Асинхронно вычисляет среднее для последовательности значений, получаемой путем вызова функции проекции для каждого элемента входной последовательности.

ContainsAsync<TSource>(IQueryable<TSource>, TSource, CancellationToken)

Асинхронно определяет, содержит ли последовательность указанный элемент, используя компаратор проверки на равенство по умолчанию.

CountAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, CancellationToken)

Асинхронно возвращает количество элементов в последовательности, удовлетворяющей условию.

CountAsync<TSource>(IQueryable<TSource>, CancellationToken)

Асинхронно возвращает количество элементов в последовательности.

FirstAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, CancellationToken)

Асинхронно возвращает первый элемент последовательности, который удовлетворяет заданному условию.

FirstAsync<TSource>(IQueryable<TSource>, CancellationToken)

Асинхронно возвращает первый элемент последовательности.

FirstOrDefaultAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, CancellationToken)

Асинхронно возвращает первый элемент последовательности, удовлетворяющий указанному условию, или значение по умолчанию, если такой элемент не найден.

FirstOrDefaultAsync<TSource>(IQueryable<TSource>, CancellationToken)

Асинхронно возвращает первый элемент последовательности или значение по умолчанию, если последовательность не содержит элементов.

ForEachAsync<T>(IQueryable<T>, Action<T>, CancellationToken)

Асинхронно перечисляет результаты запроса и выполняет указанное действие для каждого элемента.

IgnoreAutoIncludes<TEntity>(IQueryable<TEntity>)

Указывает, что текущий запрос LINQ Entity Framework не должен иметь никаких неготовых к применению переходов на уровне модели.

IgnoreQueryFilters<TEntity>(IQueryable<TEntity>)

Указывает, что для текущего запроса LINQ Entity Framework не должны применяться фильтры запросов сущностей уровня модели.

Include<TEntity>(IQueryable<TEntity>, String)

Указывает связанные сущности для включения в результаты запроса. Свойство навигации, которое необходимо добавить, указывается, начиная с типа сущности, для которой выполняется запрос ( TEntity ). Можно добавлять дополнительные свойства навигации, разделенные символом ".".

Include<TEntity,TProperty>(IQueryable<TEntity>, Expression<Func<TEntity,TProperty>>)

Указывает связанные сущности для включения в результаты запроса. Свойство навигации, которое необходимо добавить, указывается, начиная с типа сущности, для которой выполняется запрос ( TEntity ). Если требуется включить дополнительные типы на основе свойств навигации включаемого типа, последовательное вызов ThenInclude<TEntity,TPreviousProperty,TProperty>(IIncludableQueryable<TEntity,IEnumerable<TPreviousProperty>>, Expression<Func<TPreviousProperty,TProperty>>) После этого вызова.

LastAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, CancellationToken)

Асинхронно возвращает последний элемент последовательности, удовлетворяющий заданному условию.

LastAsync<TSource>(IQueryable<TSource>, CancellationToken)

Асинхронно возвращает последний элемент последовательности.

LastOrDefaultAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, CancellationToken)

Асинхронно возвращает последний элемент последовательности, удовлетворяющий указанному условию, или значение по умолчанию, если такой элемент не найден.

LastOrDefaultAsync<TSource>(IQueryable<TSource>, CancellationToken)

Асинхронно возвращает последний элемент последовательности или значение по умолчанию, если последовательность не содержит элементов.

Load<TSource>(IQueryable<TSource>)

Перечисляет запрос. При использовании Entity Framework это приводит к загрузке результатов запроса в связанный контекст. Это эквивалентно вызову ToList и последующему удалению списка (без затрат на фактическое создание списка).

LoadAsync<TSource>(IQueryable<TSource>, CancellationToken)

Асинхронно перечисляет запрос. При использовании Entity Framework это приводит к загрузке результатов запроса в связанный контекст. Это эквивалентно вызову ToList и последующему удалению списка (без затрат на фактическое создание списка).

LongCountAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, CancellationToken)

Асинхронно возвращает объект Int64 , представляющий количество элементов в последовательности, удовлетворяющей условию.

LongCountAsync<TSource>(IQueryable<TSource>, CancellationToken)

Асинхронно возвращает объект Int64 , представляющий общее число элементов в последовательности.

MaxAsync<TSource>(IQueryable<TSource>, CancellationToken)

Асинхронно возвращает максимальное значение последовательности.

MaxAsync<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,TResult>>, CancellationToken)

Асинхронно вызывает функцию проекции для каждого элемента последовательности и возвращает максимальное результирующее значение.

MinAsync<TSource>(IQueryable<TSource>, CancellationToken)

Асинхронно возвращает минимальное значение последовательности.

MinAsync<TSource,TResult>(IQueryable<TSource>, Expression<Func<TSource,TResult>>, CancellationToken)

Асинхронно вызывает функцию проекции для каждого элемента последовательности и возвращает минимальное результирующее значение.

SingleAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, CancellationToken)

Асинхронно возвращает единственный элемент последовательности, который удовлетворяет заданному условию, и создает исключение, если существует более одного такого элемента.

SingleAsync<TSource>(IQueryable<TSource>, CancellationToken)

Асинхронно возвращает единственный элемент последовательности и создает исключение, если в последовательности нет ровно одного элемента.

SingleOrDefaultAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, CancellationToken)

Асинхронно возвращает единственный элемент последовательности, удовлетворяющий указанному условию, или значение по умолчанию, если такого элемента не существует; Этот метод создает исключение, если условие удовлетворяет более чем одному элементу.

SingleOrDefaultAsync<TSource>(IQueryable<TSource>, CancellationToken)

Асинхронно возвращает единственный элемент последовательности или значение по умолчанию, если последовательность пуста; Этот метод создает исключение, если в последовательности содержится более одного элемента.

SumAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Decimal>>, CancellationToken)

Асинхронно вычисляет сумму последовательности значений, полученной путем вызова функции проекции для каждого элемента входной последовательности.

SumAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Double>>, CancellationToken)

Асинхронно вычисляет сумму последовательности значений, полученной путем вызова функции проекции для каждого элемента входной последовательности.

SumAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32>>, CancellationToken)

Асинхронно вычисляет сумму последовательности значений, полученной путем вызова функции проекции для каждого элемента входной последовательности.

SumAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int64>>, CancellationToken)

Асинхронно вычисляет сумму последовательности значений, полученной путем вызова функции проекции для каждого элемента входной последовательности.

SumAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Decimal>>>, CancellationToken)

Асинхронно вычисляет сумму последовательности значений, полученной путем вызова функции проекции для каждого элемента входной последовательности.

SumAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Double>>>, CancellationToken)

Асинхронно вычисляет сумму последовательности значений, полученной путем вызова функции проекции для каждого элемента входной последовательности.

SumAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int32>>>, CancellationToken)

Асинхронно вычисляет сумму последовательности значений, полученной путем вызова функции проекции для каждого элемента входной последовательности.

SumAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Int64>>>, CancellationToken)

Асинхронно вычисляет сумму последовательности значений, полученной путем вызова функции проекции для каждого элемента входной последовательности.

SumAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Nullable<Single>>>, CancellationToken)

Асинхронно вычисляет сумму последовательности значений, полученной путем вызова функции проекции для каждого элемента входной последовательности.

SumAsync<TSource>(IQueryable<TSource>, Expression<Func<TSource,Single>>, CancellationToken)

Асинхронно вычисляет сумму последовательности значений, полученной путем вызова функции проекции для каждого элемента входной последовательности.

TagWith<T>(IQueryable<T>, String)

Добавляет тег в коллекцию тегов, связанных с запросом EF LINQ. Теги — это заметки запросов, которые могут предоставлять контекстные сведения трассировки в различных точках конвейера запросов.

TagWithCallSite<T>(IQueryable<T>, String, Int32)

Добавляет тег в коллекцию тегов, связанных с запросом EF LINQ с именем исходного файла и строкой, где был вызван метод, который может предоставлять контекстные сведения трассировки в различных точках конвейера запросов.

ToArrayAsync<TSource>(IQueryable<TSource>, CancellationToken)

Асинхронно создает массив из IQueryable<T> , перечисляя его в асинхронном режиме.

ToDictionaryAsync<TSource,TKey>(IQueryable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>, CancellationToken)

Создает объект Dictionary<TKey,TValue> из IQueryable<T> , перечисляя его в асинхронном режиме в соответствии с заданной функцией выбора ключа и компаратором.

ToDictionaryAsync<TSource,TKey>(IQueryable<TSource>, Func<TSource,TKey>, CancellationToken)

Создает объект Dictionary<TKey,TValue> из IQueryable<T> , перечисляя его в асинхронном режиме в соответствии с заданной функцией выбора ключа.

ToDictionaryAsync<TSource,TKey,TElement>(IQueryable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>, CancellationToken)

Создает объект Dictionary<TKey,TValue> из IQueryable<T> , перечисляя его в асинхронном режиме в соответствии с заданной функцией выбора ключа, компаратором и функцией выбора элементов.

ToDictionaryAsync<TSource,TKey,TElement>(IQueryable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, CancellationToken)

Создает объект Dictionary<TKey,TValue> из IQueryable<T> , перечисляя его в асинхронном режиме в соответствии с заданным селектором ключа и функцией выбора элементов.

ToListAsync<TSource>(IQueryable<TSource>, CancellationToken)

Асинхронно создает List<T> из из IQueryable<T> , перечисляя его в асинхронном режиме.

GetInfrastructure<T>(IInfrastructure<T>)

Возвращает значение из свойства, которое скрыто с помощью IInfrastructure<T> .

Этот метод обычно используется поставщиками баз данных (и другими расширениями). Обычно он не используется в коде приложения.

IInfrastructure<T> используется для скрытия свойств, которые не предназначены для использования в коде приложения, но могут использоваться в методах расширения, написанных поставщиками баз данных и т. д.

CreateProxy<TEntity>(DbSet<TEntity>, Action<TEntity>, Object[])

Создает экземпляр прокси-сервера для типа сущности, если создание прокси-сервера включено.

CreateProxy<TEntity>(DbSet<TEntity>, Object[])

Создает экземпляр прокси-сервера для типа сущности, если создание прокси-сервера включено.

AsSingleQuery<TEntity>(IQueryable<TEntity>)

Возвращает новый запрос, настроенный на загрузку коллекций в результатах запроса в одном запросе к базе данных.

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

Поведение разбиения запросов по умолчанию для запросов может управляться с помощью UseQuerySplittingBehavior(QuerySplittingBehavior) .

AsSplitQuery<TEntity>(IQueryable<TEntity>)

Возвращает новый запрос, настроенный для загрузки коллекций в результатах запроса с помощью отдельных запросов к базе данных.

Такое поведение может значительно повысить производительность, когда запрос загружает несколько коллекций. Однако, поскольку используются отдельные запросы, это может привести к непредсказуемым результатам при параллельном обновлении. Для устранения этой проблемы и обеспечения согласованности с разделенными запросами можно использовать сериализуемые транзакции или транзакции с моментальными снимками, но это может привести к дополнительным затратам на производительность и вызвать различия в поведении.

Поведение разбиения запросов по умолчанию для запросов может управляться с помощью UseQuerySplittingBehavior(QuerySplittingBehavior) .

FromSql<TEntity>(IQueryable<TEntity>, RawSqlString, Object[])
Является устаревшей.

создает запрос LINQ на основе необработанного SQL запроса.

если поставщик базы данных поддерживает компоновку на заданном SQL, можно создать поверх необработанного SQL запроса с помощью операторов LINQ. context.Blogs.FromSql("SELECT * FROM dbo.Blogs").OrderBy(b => b.Name).

как и для любого API, который принимает SQL важно параметризовать любые вводимые пользователем данные, чтобы защититься от атак путем внедрения SQL. в строку запроса SQL можно включить заполнители параметров, а затем указать значения параметров в качестве дополнительных аргументов. Все предоставленные значения параметров будут автоматически преобразованы в DbParameter- context.Blogs.FromSql("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm).

Эта перегрузка также принимает экземпляры DbParameter в качестве значений параметров. это позволяет использовать именованные параметры в SQL строке запроса — context.Blogs.FromSql("SELECT * FROM [dbo].[SearchBlogs]({@searchTerm})", new SqlParameter("@searchTerm", userSuppliedSearchTerm))

FromSql<TEntity>(IQueryable<TEntity>, FormattableString)
Является устаревшей.

создает запрос LINQ на основе интерполяции строки, представляющей запрос SQL.

если поставщик базы данных поддерживает компоновку на заданном SQL, можно создать поверх необработанного SQL запроса с помощью операторов LINQ. context.Blogs.FromSql("SELECT * FROM dbo.Blogs").OrderBy(b => b.Name).

как и для любого API, который принимает SQL важно параметризовать любые вводимые пользователем данные, чтобы защититься от атак путем внедрения SQL. в строку запроса SQL можно включить заполнители параметров с интерполяцией. Все переданные значения параметров с интерполяцией будут автоматически преобразованы в DbParameter- context.Blogs.FromSql($"SELECT * FROM [dbo].[SearchBlogs]({userSuppliedSearchTerm})").

FromSql<TEntity>(IQueryable<TEntity>, String, Object[])

создает запрос LINQ на основе необработанного SQL запроса.

если поставщик базы данных поддерживает компоновку на заданном SQL, можно создать поверх необработанного SQL запроса с помощью операторов LINQ. context.Blogs.FromSql("SELECT * FROM dbo.Blogs").OrderBy(b => b.Name).

как и для любого API, который принимает SQL важно параметризовать любые вводимые пользователем данные, чтобы защититься от атак путем внедрения SQL. в строку запроса SQL можно включить заполнители параметров, а затем указать значения параметров в качестве дополнительных аргументов. Все предоставленные значения параметров будут автоматически преобразованы в DbParameter- context.Blogs.FromSql("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm).

Можно также создать DbParameter и указать его в качестве значения параметра. это позволяет использовать именованные параметры в SQL строке запроса — context.Blogs.FromSql("SELECT * FROM [dbo].[SearchBlogs]({@searchTerm})", new SqlParameter("@searchTerm", userSuppliedSearchTerm))

FromSqlInterpolated<TEntity>(DbSet<TEntity>, FormattableString)

создает запрос LINQ на основе интерполяции строки, представляющей запрос SQL.

если поставщик базы данных поддерживает композицию в указанной SQL, можно создать поверх необработанного SQL запроса с помощью операторов LINQ:

context.Blogs.FromSqlInterpolated($"SELECT * FROM Blogs").OrderBy(b => b.Name)

как и для любого API, который принимает SQL важно параметризовать любые вводимые пользователем данные, чтобы защититься от атак путем внедрения SQL. в строку запроса SQL можно включить заполнители параметров с интерполяцией. Все переданные значения параметров с интерполяцией будут автоматически преобразованы в DbParameter :

context.Blogs.FromSqlInterpolated($"SELECT * FROM Blogs WHERE Name = {userSuppliedSearchTerm}")
FromSqlRaw<TEntity>(DbSet<TEntity>, String, Object[])

создает запрос LINQ на основе необработанного SQL запроса.

если поставщик базы данных поддерживает композицию в указанной SQL, можно создать поверх необработанного SQL запроса с помощью операторов LINQ: context. Blogs. Фромсклрав ("SELECT * FROM blogs"). OrderBy (b = > b.Name).

как и для любого API, который принимает SQL важно параметризовать любые вводимые пользователем данные, чтобы защититься от атак путем внедрения SQL. в строку запроса SQL можно включить заполнители параметров, а затем указать значения параметров в качестве дополнительных аргументов. Все предоставленные значения параметров будут автоматически преобразованы в DbParameter :

context.Blogs.FromSqlRaw("SELECT * FROM Blogs WHERE Name = {0}", userSuppliedSearchTerm)

Однако никогда не передавайте объединенную или интерполяцию строку ($ "") с непроверенными значениями, предоставленными пользователем в этот метод. это может предоставить приложению возможность SQL атак путем внедрения. Чтобы использовать строковый синтаксис с интерполяцией, рассмотрите возможность использования FromSqlInterpolated<TEntity>(DbSet<TEntity>, FormattableString) для создания параметров.

Эта перегрузка также принимает DbParameter экземпляры в качестве значений параметров. помимо использования позиций-заполнителей ( {0} ), можно также использовать именованные заполнители непосредственно в строке запроса SQL:

context.Blogs.FromSqlRaw("SELECT * FROM Blogs WHERE Name = @searchTerm", new SqlParameter("@searchTerm", userSuppliedSearchTerm))
TemporalAll<TEntity>(DbSet<TEntity>)

Применяет временную операцию "ALL" к заданному DbSet, которая возвращает все исторические версии сущностей, а также их текущее состояние.

Временные запросы всегда задаются как "незаписанные".

TemporalAsOf<TEntity>(DbSet<TEntity>, DateTime)

Применяет временную операцию "дублирующий AsOf" к заданному DbSet, которая возвращает только те элементы, которые присутствовали в базе данных в определенный момент времени.

Временная информация хранится в формате UTC в базе данных, поэтому любые DateTime аргументы в местном времени могут привести к непредвиденным результатам.

Временные запросы всегда задаются как "незаписанные".

TemporalBetween<TEntity>(DbSet<TEntity>, DateTime, DateTime)

Применяет временную операцию "Between" к заданному DbSet, которая возвращает только те элементы, которые присутствовали в базе данных между двумя моментами времени.

Элементы, созданные в начальной точке, не включаются в результаты, однако элементы, которые были удалены в конечной точке, включаются в результаты.

Возвращаются все версии сущностей, которые присутствовали в диапазоне времени, поэтому можно вернуть несколько сущностей с одним и тем же ключом.

Временная информация хранится в формате UTC в базе данных, поэтому любые DateTime аргументы в местном времени могут привести к непредвиденным результатам.

Временные запросы всегда задаются как "незаписанные".

TemporalContainedIn<TEntity>(DbSet<TEntity>, DateTime, DateTime)

Применяет временную операцию Контаинедин' к заданному DbSet, которая возвращает только те элементы, которые присутствовали в базе данных между двумя моментами времени.

В результаты включаются элементы, созданные в начальной точке, а также элементы, которые были удалены из конечной точки.

Возвращаются все версии сущностей, которые присутствовали в диапазоне времени, поэтому можно вернуть несколько сущностей с одним и тем же ключом.

Временная информация хранится в формате UTC в базе данных, поэтому любые DateTime аргументы в местном времени могут привести к непредвиденным результатам.

Временные запросы всегда задаются как "незаписанные".

TemporalFromTo<TEntity>(DbSet<TEntity>, DateTime, DateTime)

Применяет временную операцию "Фромто" к заданному DbSet, которая возвращает только те элементы, которые присутствовали в базе данных между двумя моментами времени.

Элементы, созданные в начальной точке, а также элементы, которые были удалены в конечной точке, не включаются в результаты.

Возвращаются все версии сущностей, которые присутствовали в диапазоне времени, поэтому можно вернуть несколько сущностей с одним и тем же ключом.

Временная информация хранится в формате UTC в базе данных, поэтому любые DateTime аргументы в местном времени могут привести к непредвиденным результатам.

Временные запросы всегда задаются как "незаписанные".

Применяется к