Skip to content

The search box knows all the secrets -- try it!

Polecat is part of the Critter Stack ecosystem.

JasperFx Logo JasperFx provides formal support for Polecat and other Critter Stack libraries. Please check our Support Plans for more details.

Loading Documents by Id ​

The most direct way to load documents is by their ID.

LoadAsync ​

Load a single document by its ID:

cs
var user = await session.LoadAsync<User>(userId);

Returns null if the document doesn't exist.

LoadManyAsync ​

Load multiple documents by their IDs in a single query:

cs
var users = await session.LoadManyAsync<User>(userId1, userId2, userId3);

Returns a list containing only the documents that were found. Missing documents are silently omitted.

Identity Map Behavior ​

With DocumentTracking.IdentityMap, repeated loads of the same document return the same instance:

cs
await using var session = store.OpenSession(DocumentTracking.IdentityMap);

var user1 = await session.LoadAsync<User>(userId);
var user2 = await session.LoadAsync<User>(userId);

// user1 and user2 are the same instance
Assert.Same(user1, user2);

With lightweight sessions, each load returns a new instance.

Strongly Typed IDs ​

Loading with strongly typed IDs works the same way:

cs
public record struct UserId(Guid Value);

var user = await session.LoadAsync<User>(new UserId(guid));

Soft Delete Filtering ​

When soft deletes are enabled, LoadAsync automatically excludes soft-deleted documents:

cs
// Returns null if the document was soft-deleted
var order = await session.LoadAsync<Order>(orderId);

JSON Loading ​

Load a document as a raw JSON string:

cs
string? json = await session.LoadJsonAsync<User>(userId);

Released under the MIT License.