ASP.NET Entity Framework
最后修改于 2025 年 4 月 3 日
在本文中,我们将探讨 ASP.NET 8 中的 Entity Framework。Entity Framework 是一个强大的 ORM,可以简化 .NET 应用程序中的数据库操作。
ASP.NET 是一个跨平台、高性能的框架,用于构建现代 Web 应用程序。Entity Framework 提供对象关系映射功能。
基本定义
Entity Framework (EF) 是一个对象关系映射器 (ORM),它使 .NET 开发人员能够使用 .NET 对象与数据库进行交互。它消除了对大多数数据访问代码的需求。
EF Core 是 Entity Framework 的轻量级、可扩展版本,适用于 .NET。它支持多种数据库提供程序,包括 SQL Server、SQLite 和 MySQL。
Entity Framework 使用 LINQ 从数据库中查询数据。它会跟踪对象的更改,并自动将它们持久化回数据库。
ASP.NET Entity Framework 示例
以下示例演示了一个使用 Entity Framework Core 的基本 Web API。
var builder = WebApplication.CreateBuilder(args); builder.Services.AddDbContext<AppDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("Default"))); builder.Services.AddControllers(); var app = builder.Build(); app.MapControllers(); app.Run();
这会设置一个带有 Entity Framework Core 的 ASP.NET 应用程序。AddDbContext
方法会注册数据库上下文。
public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } public DateTime CreatedDate { get; set; } = DateTime.UtcNow; }
这定义了我们的 Product 实体类。Entity Framework 会将此类映射到数据库表。属性将成为表中的列。
using Microsoft.EntityFrameworkCore; public class AppDbContext : DbContext { public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { } public DbSet<Product> Products { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Product>().HasData( new Product { Id = 1, Name = "Laptop", Price = 999.99m }, new Product { Id = 2, Name = "Mouse", Price = 19.99m }, new Product { Id = 3, Name = "Keyboard", Price = 49.99m } ); } }
AppDbContext
表示数据库会话。DbSet<Product>
属性允许查询 Products 表。
OnModelCreating
方法会将初始数据填充到数据库中。这对于开发和测试目的很有用。
using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; [ApiController] [Route("api/[controller]")] public class ProductsController : ControllerBase { private readonly AppDbContext _context; public ProductsController(AppDbContext context) { _context = context; } [HttpGet] public async Task<IActionResult> GetAllProducts() { var products = await _context.Products.ToListAsync(); return Ok(products); } [HttpGet("{id}")] public async Task<IActionResult> GetProductById(int id) { var product = await _context.Products.FindAsync(id); if (product == null) return NotFound(); return Ok(product); } [HttpPost] public async Task<IActionResult> CreateProduct(Product product) { _context.Products.Add(product); await _context.SaveChangesAsync(); return CreatedAtAction(nameof(GetProductById), new { id = product.Id }, product); } }
此控制器演示了使用 Entity Framework 的基本 CRUD 操作。AppDbContext
通过构造函数依赖项注入进行注入。
GetAllProducts
方法从数据库检索所有产品。ToListAsync
异步执行查询。
GetProductById
方法通过主键查找单个产品。FindAsync
针对主键查找进行了优化。
CreateProduct
方法演示了添加新实体。更改会使用 SaveChangesAsync
保存到数据库。
来源
Microsoft Entity Framework Core 文档
在本文中,我们探讨了 ASP.NET 8 中的 Entity Framework。这个强大的 ORM 简化了数据库操作并提高了开发人员的生产力。