Overview
This module generates:- Cosmos DB document classes
- Repository implementations
- Unit of Work pattern
- Container configuration
- Multi-tenancy support
- Optimistic concurrency control
- Cosmos DB client setup
Installation
Key Features
- Document-based storage - JSON document persistence
- Partitioning support - Horizontal scaling via partition keys
- Global distribution - Multi-region replication
- Automatic indexing - Query optimization
- Change feed - Real-time event processing
- Multi-tenancy - Tenant isolation
Configuration
Connection Settings
appsettings.json
Managed Identity (Recommended)
appsettings.json
Module Settings
Use Optimistic Concurrency
Use Optimistic Concurrency
Ensures updates are applied only when document ETags match, for improved concurrency management.Prevents lost updates when multiple clients modify the same document.Default:
trueStore Enums as Strings
Store Enums as Strings
Enables a convention to convert enums to/from strings.Benefits:
- More readable JSON
- Better compatibility with other systems
- Easier debugging
falseAuthentication Methods
Authentication Methods
Specify which authentication methods to use:
- Key-based - Connection string with account key
- Managed Identity - Azure Managed Identity (recommended for production)
key-basedDocument Generation
Domain Entity to Document
Customer Document
Complex Documents
Order Document
Repository Implementation
Base Repository
Cosmos Repository Base
Entity Repository
Customer Repository
Usage Examples
Basic CRUD
CRUD Operations
Advanced Queries
Advanced Queries
Cross-Partition Queries
Cross-Partition Query
Partitioning
Partition Key Design
Partition Key
Multi-Tenancy
Multi-Tenant Setup
Optimistic Concurrency
Concurrency Control
Performance Optimization
Indexing
Configure indexes for frequently queried properties to improve performance.
Partition Strategy
Choose partition keys that distribute load evenly across physical partitions.
Query Optimization
Use SELECT with specific fields instead of SELECT * to reduce RU consumption.
Caching
Cache frequently accessed documents to reduce Cosmos DB calls.
Request Units (RU)
Monitor RUs
Change Feed
Change Feed Processor
Best Practices
- Design for scale - Choose partition keys that distribute data evenly
- Minimize cross-partition queries - They consume more RUs
- Use point reads - Most efficient way to read documents
- Implement retry logic - Handle rate limiting (429 status)
- Monitor RU consumption - Optimize queries based on RU usage
- Use bulk operations - For high-volume data operations
Related Modules
- Entities - Domain entities
- EF Core - Alternative persistence
- Application Services - Application layer
