‹ 首页

dotnet-backend-patterns

@tranhieutt · 收录于 1 周前

Provides .NET and ASP.NET Core patterns for REST APIs, Entity Framework, dependency injection, and middleware. Use when working with C# files (*.cs, *.csproj) or when the user mentions .NET, ASP.NET Core, C#, or Entity Framework.

适合你,如果你在用 C# 和 ASP.NET Core 构建 REST API

/ 下载安装
dotnet-backend-patterns.skill双击,或拖进 Claude 桌面版 / Cowork,即完成安装↓ .skill↓ .zip
用别的 agent?下载 .zip 解压,把文件夹放进它的技能目录
Claude Code~/.claude/skills/(项目级 .claude/skills/)
Codex CLI~/.codex/skills/
Cursor自动读取上面两处目录
其他工具见其文档的「skills」目录;两个下载是同一份文件,只是名字不同
/ 通过 npx 安装 校验哈希
npx oh-my-skill add tranhieutt/software_development_department/dotnet-backend-patterns
/ 通过 bash 安装
curl -fsSL https://oh-my-skill.com/install.sh | bash -s -- tranhieutt/software_development_department/dotnet-backend-patterns
/ 已经装过?验证本机副本,不用重装
npx oh-my-skill verify tranhieutt/software_development_department/dotnet-backend-patterns
安装目标可用 --agent / --scope 或 --to 明确指定;省略时只会在唯一已存在的 agent 目录上自动选择,零命中或多命中会停止并提示。content_hash 缺失或不一致均拒装。
68GitHub stars
~680最小装载
~680含声明引用
~8.9K文本包总量
镜像托管

怎么用

技能原文 SKILL.md作者撰写 · MIT · e5ba809

.NET Backend Development Patterns

C#/.NET patterns for production-grade APIs, MCP servers, and enterprise backends.

API Structure (Minimal API + Controllers)

\\\`csharp // Program.cs - Minimal API var builder = WebApplication.CreateBuilder(args); builder.Services.AddDbContext<AppDbContext>(o => o.UseNpgsql(connStr)); builder.Services.AddScoped<IOrderService, OrderService>();

var app = builder.Build(); app.MapGet("/orders/{id}", async (int id, IOrderService svc) => await svc.GetByIdAsync(id) is { } order ? Results.Ok(order) : Results.NotFound()); \\\`

Dependency Injection Patterns

\\\csharp // Register services builder.Services.AddScoped<IPaymentService, StripePaymentService>(); builder.Services.AddSingleton<ICacheService, RedisCacheService>(); builder.Services.AddHttpClient<IApiClient, ExternalApiClient>(client => { client.BaseAddress = new Uri("https://api.external.com"); }); \\\

Lifetime guide: Singleton (stateless/cache), Scoped (per-request), Transient (stateless utility).

Entity Framework Core

\\\csharp // DbContext with conventions public class AppDbContext : DbContext { public DbSet<Order> Orders => Set<Order>(); protected override void OnModelCreating(ModelBuilder builder) { builder.Entity<Order>().HasIndex(o => o.UserId); builder.Entity<Order>().Property(o => o.Total).HasPrecision(18, 2); } } \\\

Performance tips:

  • Use .AsNoTracking() for read-only queries
  • Avoid N+1 with .Include() or projection
  • Use compiled queries for hot paths
Middleware Pipeline

\\\csharp app.UseMiddleware<RequestLoggingMiddleware>(); app.UseAuthentication(); app.UseAuthorization(); app.UseRateLimiter(); app.MapControllers(); \\\

Error Handling

\\\csharp // Global exception handler app.UseExceptionHandler(err => err.Run(async context => { var exception = context.Features.Get<IExceptionHandlerFeature>()?.Error; var (status, message) = exception switch { NotFoundException => (404, exception.Message), UnauthorizedAccessException => (403, "Forbidden"), _ => (500, "Internal server error") }; context.Response.StatusCode = status; await context.Response.WriteAsJsonAsync(new { error = message }); })); \\\

Configuration (IOptions pattern)

\\\`csharp builder.Services.Configure<StripeSettings>( builder.Configuration.GetSection("Stripe"));

// Usage public class PaymentService(IOptions<StripeSettings> opts) { private readonly string _key = opts.Value.SecretKey; } \\\`

Testing

\\\csharp // Integration test with WebApplicationFactory public class OrderApiTests : IClassFixture<WebApplicationFactory<Program>> { private readonly HttpClient _client; [Fact] public async Task GetOrder_ReturnsOk() { var response = await _client.GetAsync("/orders/1"); response.StatusCode.Should().Be(HttpStatusCode.OK); } } \\\

Related Skills
  • backend-architect — architecture decisions
  • database-architect — schema design
  • drizzle-orm-expert — Node.js ORM alternative
按 MIT 许可原样转载,未经改动 · 在 GitHub 查看 →

评论

登录即可评论;带「已验证安装」的,是发布者名下有本店的安装或持有记录。