Back to list
mitkox

net-repository-pattern

by mitkox

AI Coding Factory. Replace your software outsourcing vendor contracts with your own AI.

121🍴 50📅 Jan 23, 2026

SKILL.md


name: net-repository-pattern description: Implement repository pattern with Unit of Work for EF Core license: MIT compatibility: opencode metadata: audience: .net-developers framework: entityframeworkcore patterns: repository

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.

Score

Total Score

70/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

+5
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

+5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon