Table of Contents

Class EntitySet<T>

Namespace
The.Entities
Assembly
Instagile.dll

An entity set representing all entities of type T in the entity store.

public class EntitySet<T> : IEntitySet<T>, IFrozenQuery<T>, IEntityQuery<T>, IEntityQuery, IDisposable, ILazy, ILoadedSet<T>, IReadOnlyCollection<T>, IEnumerable<T>, IEnumerable, INotifyCollectionChanged, IProperty, IOwned, IHasChanges where T : IEntity<T>

Type Parameters

T
Inheritance
EntitySet<T>
Implements
Inherited Members
Extension Methods

Constructors

EntitySet(IEntityContext, int)

public EntitySet(IEntityContext context, int count)

Parameters

context IEntityContext
count int

Properties

CacheState

Whether data was loaded from the entity cache and, if so, whether it's up to date.

public ResultState CacheState { get; }

Property Value

ResultState

Count

Gets the number of elements that were present when the query was frozen.

public int Count { get; }

Property Value

int

ElementType

Gets the type of the element(s) that are returned when the expression tree associated with this instance of IEntityQuery is executed.

public Type ElementType { get; }

Property Value

Type

Expression

Gets the expression tree that is associated with the instance of IEntityQuery.

public Expression Expression { get; }

Property Value

Expression

IsPresent

has this data been eager-loaded?

public bool IsPresent { get; }

Property Value

bool

Metadata

Owner's property descriptor (if any owner).

public PropertyInfo? Metadata { get; }

Property Value

PropertyInfo

Parent

Owner (if any).

public EntityKernel? Parent { get; }

Property Value

EntityKernel

Provider

Gets the query provider that is associated with this data source.

public IEntityQueryProvider Provider { get; }

Property Value

IEntityQueryProvider

Methods

Add(T)

public void Add(T item)

Parameters

item T

AddAsync(T, CancellationToken?)

public Task AddAsync(T item, CancellationToken? cancellationToken = null)

Parameters

item T
cancellationToken CancellationToken?

Returns

Task

AddRange(IEnumerable<T>)

public void AddRange(IEnumerable<T> items)

Parameters

items IEnumerable<T>

AddRangeAsync(IEnumerable<T>, CancellationToken?)

public Task AddRangeAsync(IEnumerable<T> items, CancellationToken? cancellationToken = null)

Parameters

items IEnumerable<T>
cancellationToken CancellationToken?

Returns

Task

AsLoaded()

Assert that the set is loaded and treat it as iterable.

public ILoadedSet<T> AsLoaded()

Returns

ILoadedSet<T>

Exceptions

InvalidOperationException

Thrown if the set is partially or entirely unloaded.

AsUnloaded()

Assert that the set is unloaded and treat it as a datastore query.

public IEntityQuery<T> AsUnloaded()

Returns

IEntityQuery<T>

Remarks

An empty set is always considered loaded. Calling this method on an empty set will cause an exception to be thrown.

Exceptions

InvalidOperationException

Thrown if the set is partially or entirely loaded.

Clear()

public void Clear()

ClearAsync(CancellationToken?)

public Task ClearAsync(CancellationToken? cancellationToken = null)

Parameters

cancellationToken CancellationToken?

Returns

Task

Contains(T)

public bool Contains(T item)

Parameters

item T

Returns

bool

ContainsAsync(T, CancellationToken?)

public Task<bool> ContainsAsync(T item, CancellationToken? cancellationToken = null)

Parameters

item T
cancellationToken CancellationToken?

Returns

Task<bool>

CreateAsync(IEntityContext, CancellationToken?)

Count entities in the table and create a set. Does not load all entities.

public static Task<EntitySet<T>> CreateAsync(IEntityContext context, CancellationToken? ct = null)

Parameters

context IEntityContext
ct CancellationToken?

Returns

Task<EntitySet<T>>

CreateCachedAsync(IEntityContext, CancellationToken?)

Count entities in the table and create a set. Does not load all entities. Uses counts from the cache if possible.

public static Task<EntitySet<T>> CreateCachedAsync(IEntityContext context, CancellationToken? ct = null)

Parameters

context IEntityContext
ct CancellationToken?

Returns

Task<EntitySet<T>>

Dispose()

Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

public void Dispose()

EnsurePresent()

public void EnsurePresent()

EnsurePresentAsync(CancellationToken?)

public Task EnsurePresentAsync(CancellationToken? cancellationToken = null)

Parameters

cancellationToken CancellationToken?

Returns

Task

GetEnumerator()

public IEnumerator<T> GetEnumerator()

Returns

IEnumerator<T>

HasChanges()

true if the current value differs from its original

public bool HasChanges()

Returns

bool

IsInMemory()

Returns true if the frozen query is at least partially-loaded. In-memory queries should not be transformed into ReadOperations for batching.

public bool IsInMemory()

Returns

bool

LoadAsync(CancellationToken?)

Load the whole set into memory for iteration or modification, including related entities.

public Task<ILoadedSet<T>> LoadAsync(CancellationToken? cancellationToken = null)

Parameters

cancellationToken CancellationToken?

Cancellation token.

Returns

Task<ILoadedSet<T>>

The loaded set.

LoadAsync(RelationshipPath[], CancellationToken?)

Load the whole set into memory for iteration or modification.

public Task<ILoadedSet<T>> LoadAsync(RelationshipPath[] includeRelationships, CancellationToken? cancellationToken = null)

Parameters

includeRelationships RelationshipPath[]

Relationship paths to load along with the set. If the set is already loaded, just the paths will be loaded.

cancellationToken CancellationToken?

Cancellation token.

Returns

Task<ILoadedSet<T>>

The loaded set.

LoadCachedAsync(RequestOptions?, CancellationToken?)

Load the whole set into memory for iteration or modification, including related entities. Uses the entity cache if possible. If the result was stale, CollectionChanged will be raised after validation.

public Task<ILoadedSet<T>> LoadCachedAsync(RequestOptions? options = null, CancellationToken? cancellationToken = null)

Parameters

options RequestOptions

Request options (priority, freshness requirements).

cancellationToken CancellationToken?

Cancellation token.

Returns

Task<ILoadedSet<T>>

The loaded set.

Remarks

Check CacheState after calling to determine if a background refresh is in progress:

  • Fresh - Data is current, no refresh pending
  • Stale - Showing cached data, refresh in progress
  • Uncached - Data not from cache (for example, if already loaded)

If the collection is modified locally before the background refresh completes, the refresh will be silently skipped to preserve local changes.

Cache updates are marshalled to the calling thread's SynchronizationContext if available (e.g., WPF UI thread, Blazor component context).

LoadCachedAsync(RelationshipPath[], RequestOptions?, CancellationToken?)

Load the whole set into memory for iteration or modification. Uses the entity cache if possible. If the result was stale, CollectionChanged will be raised after validation.

public Task<ILoadedSet<T>> LoadCachedAsync(RelationshipPath[] includes, RequestOptions? options = null, CancellationToken? cancellationToken = null)

Parameters

includes RelationshipPath[]

Relationship paths to load along with the set. If the set is already loaded, uses GraphNavigation.LoadGraphAsync to load the paths.

options RequestOptions

Request options (priority, freshness requirements).

cancellationToken CancellationToken?

Cancellation token.

Returns

Task<ILoadedSet<T>>

The loaded set.

Remarks

Check CacheState after calling to determine if a background refresh is in progress:

  • Fresh - Data is current, no refresh pending
  • Stale - Showing cached data, refresh in progress
  • Uncached - Data not from cache (for example, if already loaded)

If the collection is modified locally before the background refresh completes, the refresh will be silently skipped to preserve local changes.

Cache updates are marshalled to the calling thread's SynchronizationContext if available (e.g., WPF UI thread, Blazor component context).

MarkUnchanged()

update original data so that it's no longer considered changed

public void MarkUnchanged()

NeedsSave()

true if the value has non-derived changes, ones made deliberately by a user or business logic

public bool NeedsSave()

Returns

bool

Remove(T)

public void Remove(T item)

Parameters

item T

RemoveAsync(T, CancellationToken?)

public Task RemoveAsync(T item, CancellationToken? cancellationToken = null)

Parameters

item T
cancellationToken CancellationToken?

Returns

Task

RemoveRange(IEnumerable<T>)

public void RemoveRange(IEnumerable<T> items)

Parameters

items IEnumerable<T>

RemoveRangeAsync(IEnumerable<T>, CancellationToken?)

public Task RemoveRangeAsync(IEnumerable<T> items, CancellationToken? cancellationToken = null)

Parameters

items IEnumerable<T>
cancellationToken CancellationToken?

Returns

Task

ReplaceAll(IEnumerable<T>)

public void ReplaceAll(IEnumerable<T> items)

Parameters

items IEnumerable<T>

ReplaceAllAsync(IEnumerable<T>, CancellationToken?)

public Task ReplaceAllAsync(IEnumerable<T> items, CancellationToken? cancellationToken = null)

Parameters

items IEnumerable<T>
cancellationToken CancellationToken?

Returns

Task

SaveAsync(CancellationToken?)

public Task<SaveResult> SaveAsync(CancellationToken? ct = null)

Parameters

ct CancellationToken?

Returns

Task<SaveResult>

Events

CollectionChanged

Occurs when the collection changes.

public event NotifyCollectionChangedEventHandler? CollectionChanged

Event Type

NotifyCollectionChangedEventHandler