smithery.ai

net-repository-pattern

Implement repository pattern with Unit of Work for EF Core

First seen Apr 4, 2026

Installation

$ npx skills add https://smithery.ai

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery.ai · top by installs.

npx skills add https://smithery.ai

Browse all from smithery.ai

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Declared

Skill metadata

Parsed from SKILL.md frontmatter.

LicenseMIT
Compatibilityopencode
Declared agents opencode
More metadata
audience
.net-developers
framework
entityframeworkcore
patterns
repository

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 2,798 B
  • docs SUMMARY.md 88 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 2 installs

SKILL.md

What I Do

I implement repository pattern with Unit of Work:

  • Generic repository base
  • Specific repositories
  • Unit of Work pattern
  • EF Core integration
  • Specification pattern support

When to Use Me

Use this skill when:

  • Implementing data access layer
  • Adding repository abstractions
  • Working with EF Core
  • Need Unit of Work pattern

Repository Structure

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/

Repository Implementation

Generic Repository Interface

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);
}

Unit of Work

public interface IUnitOfWork : IDisposable
{
    IProductRepository Products { get; }
    IOrderRepository Orders { get; }
    IUserRepository Users { get; }
    Task<int> CompleteAsync();
    Task RollbackAsync();
}

Specification Pattern

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; }
}

Best Practices

  1. Repositories are per aggregate root
  2. Use specifications for complex queries
  3. Unit of Work manages transactions
  4. DbContext is internal to infrastructure
  5. Repository interfaces in Domain layer
  6. Implementations in Infrastructure layer

Example Usage

Create repository implementation for:
- Product aggregate
- Order aggregate
- Customer aggregate
With Unit of Work pattern

I will generate complete repository implementation with EF Core.