cosmos-repository

Automate Cosmos DB repository data access with LINQ queries and FeedIterator pagination.

4|1|Updated Mar 15, 2026
One-click install
npx skills add https://github.com/FaysilAlshareef/dotnet-ai-kit --skill cosmos-repository
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: cosmos-repository
Source: https://github.com/FaysilAlshareef/dotnet-ai-kit/tree/main/skills/microservice/cosmos/cosmos-repository
Command: npx skills add https://github.com/FaysilAlshareef/dotnet-ai-kit --skill cosmos-repository

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Cosmos DB repository implementations often require boilerplate for LINQ queries, discriminator filtering, and paginated data access, leading to repetitive code and potential inconsistencies.

Core Features & Use Cases

  • LINQ-based data access: standardizes query patterns against Cosmos containers with discriminators.
  • Pagination with FeedIterator: efficiently streams large result sets without loading everything into memory.
  • ETag-aware upserts and point reads: optimizes concurrency and reduces conflicts in concurrent environments.
  • Use Case: Create a Cosmos DB repository for a microservice and implement common data access patterns with a reusable base.

Quick Start

Create or refactor a Cosmos DB repository using LINQ queries and FeedIterator pagination.

Frequently Asked Questions about cosmos-repository

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I implement paginated queries in a Cosmos DB repository using .NET?

Cosmos DB pagination can be implemented using a FeedIterator to efficiently stream large result sets without loading everything into memory. This approach standardizes repository patterns alongside LINQ queries and discriminator filtering.

What is the best way to use LINQ for Cosmos DB data access with discriminators?

Using LINQ for Cosmos DB data access involves GetItemLinqQueryable to apply discriminator filters directly against containers. This standardizes query patterns and reduces boilerplate code in .NET microservices.

How do FeedIterator and point reads optimize Cosmos DB repository performance?

FeedIterator streams paginated results to control memory usage, while point reads target specific items by ID and partition key. Tracking Request Units during these operations helps optimize Cosmos DB performance and cost.

Can I use ETags for safe upserts in a Cosmos DB .NET microservice?

ETags enable safe upserts in Cosmos DB by managing optimistic concurrency control. Checking the ETag during repository updates reduces conflicts in concurrent environments and prevents accidental overwrites.

Does this Cosmos DB repository pattern support .NET microservices?

This repository pattern is designed for .NET microservices implementing Cosmos DB data access. It provides a reusable base for point reads, LINQ queries, and FeedIterator pagination within distributed service architectures.

Why are my Cosmos DB LINQ queries loading too much data into memory?

Loading too much data into memory happens when querying without FeedIterator pagination. Implementing FeedIterator streams large result sets efficiently, applying discriminator filters to limit the queried container data.