EF Core 的基本工作流程(举例)
Entity Framework Core(EF Core)是一个对象关系映射(ORM)框架,用于在应用程序中处理数据库操作。它的基本工作流程通常包括以下几个步骤:
举例
1. 定义实体类
创建表示数据库表的实体类。每个实体类通常代表数据库中的一张表,类中的属性对应表中的列。
// 实体类:Blog
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public List<Post> Posts { get; set; } // 表示博客包含多篇文章
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; } // 外键,表示文章所属博客
public Blog Blog { get; set; } // 表示文章属于某个博客
}
2. 创建数据库上下文类
派生自 DbContext 的类,它表示应用程序和数据库之间的会话。在这个类中,你可以定义实体集合(DbSet<>)以及配置数据库连接等信息。
// 数据库上下文类:BloggingContext
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// 配置数据库连接
optionsBuilder.UseSqlServer("YourConnectionString");
}
}
3. 配置实体之间的关系和映射
使用 Fluent API 或者数据注解(Data Annotations)来配置实体之间的关系,以及属性与数据库列之间的映射关系。这些配置用于定义数据库的结构。
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// 配置博客和文章之间的一对多关系
modelBuilder.Entity<Post>()
.HasOne(p => p.Blog) // 一篇文章属于一个博客
.WithMany(b => b.Posts) // 一个博客拥有多篇文章
.HasForeignKey(p => p.BlogId); // 使用 BlogId 作为外键
// 其他配置,例如:索引、主键、唯一约束等
// ...
base.OnModelCreating(modelBuilder);
}
}
4. 进行数据库操作(执行 SQL 查询)
在应用程序中,通过数据库上下文类访问和操作实体集合。可以使用 LINQ 查询语言进行数据检索、插入、更新和删除操作等。
// 在应用程序中使用数据库上下文进行数据库操作
using (var context = new BloggingContext())
{
// 添加新博客
var newBlog = new Blog { Url = "https://example.com" };
context.Blogs.Add(newBlog);
context.SaveChanges();
// 查询博客列表
var blogs = context.Blogs.ToList();
// 修改博客
var blogToUpdate = context.Blogs.FirstOrDefault(b => b.Url == "https://example.com");
if (blogToUpdate != null)
{
blogToUpdate.Url = "https://updated-url.com";
context.SaveChanges();
}
// 删除博客
var blogToDelete = context.Blogs.FirstOrDefault(b => b.Url == "https://updated-url.com");
if (blogToDelete != null)
{
context.Blogs.Remove(blogToDelete);
context.SaveChanges();
}
}
执行数据库迁移
EF Core 的迁移系统允许你基于模型更改来更新数据库架构。通过执行 add-migration 命令来创建迁移,然后使用 update-database 命令来应用迁移,将模型更改同步到数据库
dotnet ef migrations add InitialCreate
dotnet ef database update