← スキル一覧に戻る

net-repository-pattern
by mitkox
net-repository-patternは、other分野における実用的なスキルです。複雑な課題への対応力を強化し、業務効率と成果の質を改善します。
⭐ 121🍴 50📅 2026年1月23日
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
- 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.
スコア
総合スコア
70/100
リポジトリの品質指標に基づく評価
✓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
レビュー
💬
レビュー機能は近日公開予定です