net-repository-pattern
1
总安装量
1
周安装量
#45735
全站排名
安装命令
npx skills add https://github.com/mitkox/ai-coding-factory --skill net-repository-pattern
Agent 安装分布
amp
1
opencode
1
kimi-cli
1
codex
1
github-copilot
1
claude-code
1
Skill 文档
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
- Repositories are per aggregate root
- Use specifications for complex queries
- Unit of Work manages transactions
- DbContext is internal to infrastructure
- Repository interfaces in Domain layer
- 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.