Dotnet

作者 mindrally97184105b5da无许可证269 个星标收录于 2026年10月8日更新于 2026年10月8日仓库5周前更新

Guidelines for .NET backend development with C#, ASP.NET Core, and Entity Framework Core

AI 生成的概览

使用 C#、ASP.NET Core 和 Entity Framework Core 进行 .NET 后端开发的指南。

功能
提供 .NET 后端开发的编码指南与约定,涵盖 C# 代码风格、项目结构、RESTful API 设计、async/await 模式、Entity Framework Core 用法、依赖注入、缓存、验证、错误处理、安全性、测试和文档。其中包含控制器、EF Core 查询和服务注册的示例 C# 代码片段。产出的是指导内容,而非可运行代码或文件。
适用场景
适用于使用 C#、ASP.NET Core 或 Entity Framework Core 构建、审查或组织 .NET 后端服务时。也适合在为此类项目确定 API 设计、数据访问或测试约定时参考。
运行要求
无需任何工具、软件包或凭据;仅为说明性指导,不附带脚本。

.NET Development Guidelines

You are an expert in .NET backend development with deep knowledge of C#, ASP.NET Core, Entity Framework Core, and modern .NET practices.

Code Style and Structure

  • Write concise, idiomatic C# code with accurate examples
  • Follow .NET conventions and best practices
  • Use object-oriented programming with proper encapsulation
  • Prefer LINQ for collection operations
  • Structure code according to Clean Architecture principles

Project Structure

src/  Domain/           # Entities, value objects, domain logic  Application/      # Use cases, DTOs, interfaces  Infrastructure/   # Data access, external services  WebApi/          # Controllers, middleware, configurationtests/  UnitTests/  IntegrationTests/

RESTful API Design

  • Use proper HTTP methods (GET, POST, PUT, PATCH, DELETE)
  • Return appropriate status codes
  • Use plural nouns for resource endpoints
  • Implement proper pagination for collections
  • Use query parameters for filtering and sorting
  • Version APIs (URL path or header)
csharp
[ApiController][Route("api/v1/[controller]")]public class UsersController : ControllerBase{    [HttpGet]    public async Task<ActionResult<IEnumerable<UserDto>>> GetUsers([FromQuery] PaginationParams pagination)
    [HttpGet("{id}")]    public async Task<ActionResult<UserDto>> GetUser(int id)
    [HttpPost]    public async Task<ActionResult<UserDto>> CreateUser(CreateUserDto dto)}

Async/Await Patterns

  • Use async/await for all I/O-bound operations
  • Suffix async methods with Async
  • Don't block on async code (avoid .Result and .Wait())
  • Use CancellationToken for cancellation support
  • Prefer ValueTask for frequently-called methods

Entity Framework Core

Configuration

  • Use Fluent API for entity configuration
  • Configure relationships explicitly
  • Use migrations for schema changes
  • Enable nullable reference types

Best Practices

  • Use AsNoTracking() for read-only queries
  • Implement the Repository pattern for data access
  • Use Include/ThenInclude for eager loading
  • Avoid N+1 query problems
  • Use projections for optimized queries
csharp
public async Task<IEnumerable<UserDto>> GetUsersAsync(){    return await _context.Users        .AsNoTracking()        .Select(u => new UserDto        {            Id = u.Id,            Name = u.Name        })        .ToListAsync();}

Dependency Injection

  • Use constructor injection
  • Register services in Program.cs
  • Use appropriate lifetimes (Scoped, Transient, Singleton)
  • Create interfaces for service abstractions
  • Use Options pattern for configuration
csharp
builder.Services.AddScoped<IUserService, UserService>();builder.Services.Configure<JwtSettings>(builder.Configuration.GetSection("Jwt"));

Caching

  • Use IMemoryCache for in-memory caching
  • Use IDistributedCache for distributed scenarios
  • Implement cache invalidation strategies
  • Use response caching for HTTP responses
  • Consider Redis for production caching

Validation

  • Use FluentValidation for complex validation
  • Use Data Annotations for simple validation
  • Validate early in the request pipeline
  • Return detailed validation errors
  • Implement model state validation

Error Handling

  • Use global exception handling middleware
  • Create custom exception types
  • Return consistent error responses
  • Log exceptions with context
  • Don't expose internal details

Security

Authentication

  • Use JWT tokens for API authentication
  • Implement refresh token rotation
  • Store tokens securely
  • Use ASP.NET Core Identity when appropriate

Authorization

  • Use policy-based authorization
  • Implement resource-based authorization
  • Apply [Authorize] attributes appropriately
  • Use claims for fine-grained permissions

Testing

  • Write unit tests with xUnit
  • Use Moq for mocking dependencies
  • Write integration tests with WebApplicationFactory
  • Test API endpoints end-to-end
  • Use in-memory database for testing

Documentation

  • Use Swagger/OpenAPI for API documentation
  • Document all endpoints with XML comments
  • Include request/response examples
  • Generate client SDKs from OpenAPI spec

来源与署名

来源:mindrally/skills位于dotnet提交9718410

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架