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 简化了数据库操作并提高了开发人员的生产力。