Implement repository pattern with Unit of Work for EF Core
I implement repository pattern with Unit of Work:
Use this skill when:
src/{ProjectName}.Infrastructure/Data/
├── DbContext/
│ ├── AppDbContext.cs
│ └── ApplicationDbContextFactory.cs
├── Repositories/
│ ├── Base/
│ │ ├── Repository.cs
│ │ └── ReadOnlyRepository.cs
│ ├── ProductRepository.cs
│ ├── OrderRepository.cs
│ └── UserRepository.cs
├── UnitOfWork/
│ ├── IUnitOfWork.cs
│ └── UnitOfWork.cs
├── Specifications/
│ ├── ISpecification.cs
│ └── SpecificationEvaluator.cs
└── Migrations/
public interface IRepository<TEntity>
where TEntity : Entity
{
Task<TEntity?> GetByIdAsync(Guid id);
Task<IReadOnlyList<TEntity>> GetAllAsync();
Task<IReadOnlyList<TEntity>> ListAsync(
ISpecification<TEntity> spec);
Task<TEntity?> GetEntityWithSpec(ISpecification<TEntity> spec);
Task<int> CountAsync(ISpecification<TEntity> spec);
void Add(TEntity entity);
void Update(TEntity entity);
void Delete(TEntity entity);
}
public interface IUnitOfWork : IDisposable
{
IProductRepository Products { get; }
IOrderRepository Orders { get; }
IUserRepository Users { get; }
Task<int> CompleteAsync();
Task RollbackAsync();
}
public interface ISpecification<T>
{
Expression<Func<T, bool>> Criteria { get; }
List<Expression<Func<T, object>>> Includes { get; }
string IncludeString { get; }
Expression<Func<T, object>> OrderBy { get; }
Expression<Func<T, object>> OrderByDescending { get; }
}
Create repository implementation for:
- Product aggregate
- Order aggregate
- Customer aggregate
With Unit of Work pattern
I will generate complete repository implementation with EF Core.
npx skills add mitkox/net-repository-pattern下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer