Entity Framework Core 入门教程来袭!快速上手强大的 ORM 工具,开启高效数据库开发之旅!

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 【8月更文挑战第31天】Entity Framework Core(EF Core)是一个轻量且可扩展的对象关系映射(ORM)框架,允许开发者使用 .NET 语言操作数据库而无需直接编写 SQL 语句。本教程涵盖 EF Core 的安装、数据库上下文创建、数据库连接配置及常见数据库操作(如添加、查询、更新和删除),并介绍如何利用数据库迁移功能安全地更改数据库结构。通过本教程,你可以快速掌握 EF Core 的基本用法,提高开发效率。

Entity Framework Core(EF Core)是一个轻量级、可扩展的对象关系映射(ORM)框架,它允许开发者使用.NET 语言来操作数据库,而无需直接编写 SQL 语句。本教程将带你快速上手 EF Core,让你轻松掌握这个强大的 ORM 工具。

一、安装 Entity Framework Core

首先,确保你已经安装了.NET Core SDK。然后,在你的项目中安装 Entity Framework Core 包。可以通过 NuGet 包管理器或者在命令行中使用以下命令进行安装:

dotnet add package Microsoft.EntityFrameworkCore

二、创建数据库上下文

数据库上下文(DbContext)是 EF Core 中与数据库进行交互的主要入口点。创建一个新的类,继承自DbContext类,并在其中定义数据库表的实体类集合。

例如,假设我们有一个名为“Book”的实体类,代表数据库中的书籍表:

using Microsoft.EntityFrameworkCore;

namespace MyApp.Models
{
   
    public class BookContext : DbContext
    {
   
        public BookContext(DbContextOptions<BookContext> options) : base(options)
        {
   
        }

        public DbSet<Book> Books {
    get; set; }
    }

    public class Book
    {
   
        public int Id {
    get; set; }
        public string Title {
    get; set; }
        public string Author {
    get; set; }
    }
}

三、配置数据库连接

在应用程序的启动文件中,配置数据库连接。可以使用不同的数据库提供程序,如 SQL Server、MySQL、PostgreSQL 等。

以下是一个使用 SQL Server 数据库的示例:

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace MyApp
{
   
    public class Startup
    {
   
        public Startup(IConfiguration configuration)
        {
   
            Configuration = configuration;
        }

        public IConfiguration Configuration {
    get; }

        public void ConfigureServices(IServiceCollection services)
        {
   
            services.AddDbContext<BookContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("MyConnectionString")));

            services.AddControllers();
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
   
            if (env.IsDevelopment())
            {
   
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
   
                endpoints.MapControllers();
            });
        }
    }
}

appsettings.json文件中添加数据库连接字符串:

{
   
  "ConnectionStrings": {
   
    "MyConnectionString": "Server=(localdb)\\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;"
  }
}

四、执行数据库操作

一旦配置好数据库上下文和连接,就可以使用 EF Core 进行数据库操作了。以下是一些常见的操作示例:

  1. 添加数据:
using (var context = new BookContext())
{
   
    var book = new Book {
    Title = "The Great Gatsby", Author = "F. Scott Fitzgerald" };
    context.Books.Add(book);
    context.SaveChanges();
}
  1. 查询数据:
using (var context = new BookContext())
{
   
    var books = context.Books.ToList();
    foreach (var book in books)
    {
   
        Console.WriteLine($"Title: {book.Title}, Author: {book.Author}");
    }
}
  1. 更新数据:
using (var context = new BookContext())
{
   
    var book = context.Books.Find(1);
    if (book!= null)
    {
   
        book.Title = "New Title";
        context.SaveChanges();
    }
}
  1. 删除数据:
using (var context = new BookContext())
{
   
    var book = context.Books.Find(1);
    if (book!= null)
    {
   
        context.Books.Remove(book);
        context.SaveChanges();
    }
}

五、数据库迁移

EF Core 支持数据库迁移,允许你在不丢失数据的情况下更改数据库结构。可以使用以下命令创建和应用数据库迁移:

  1. 创建初始迁移:
dotnet ef migrations add InitialMigration
  1. 更新数据库:
dotnet ef database update

六、总结

通过本教程,你应该对 Entity Framework Core 有了一个初步的了解,并能够使用它进行基本的数据库操作。EF Core 提供了许多强大的功能,如查询构建、事务处理、懒加载等,可以大大提高开发效率。在实际应用中,可以根据具体需求深入学习和探索 EF Core 的更多功能。

以下是一个完整的示例项目,展示了如何使用 Entity Framework Core 进行数据库操作:

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace MyApp
{
   
    public class Startup
    {
   
        public Startup(IConfiguration configuration)
        {
   
            Configuration = configuration;
        }

        public IConfiguration Configuration {
    get; }

        public void ConfigureServices(IServiceCollection services)
        {
   
            services.AddDbContext<BookContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("MyConnectionString")));

            services.AddControllers();
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
   
            if (env.IsDevelopment())
            {
   
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
   
                endpoints.MapControllers();
            });
        }
    }

    public class BookContext : DbContext
    {
   
        public BookContext(DbContextOptions<BookContext> options) : base(options)
        {
   
        }

        public DbSet<Book> Books {
    get; set; }
    }

    public class Book
    {
   
        public int Id {
    get; set; }
        public string Title {
    get; set; }
        public string Author {
    get; set; }
    }

    class Program
    {
   
        static void Main()
        {
   
            var builder = WebApplication.CreateBuilder();
            builder.Services.AddControllers();

            var app = builder.Build();

            if (app.Environment.IsDevelopment())
            {
   
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();

            app.UseAuthorization();

            app.MapControllers();

            app.Run();
        }
    }
}

希望这个教程对你有所帮助,让你能够快速上手 Entity Framework Core,开启高效的数据库开发之旅。

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
19天前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
60 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
9天前
|
存储 SQL API
探索后端开发:构建高效API与数据库交互
【10月更文挑战第36天】在数字化时代,后端开发是连接用户界面和数据存储的桥梁。本文深入探讨如何设计高效的API以及如何实现API与数据库之间的无缝交互,确保数据的一致性和高性能。我们将从基础概念出发,逐步深入到实战技巧,为读者提供一个清晰的后端开发路线图。
|
6天前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
10天前
|
存储 SQL 数据库
深入浅出后端开发之数据库优化实战
【10月更文挑战第35天】在软件开发的世界里,数据库性能直接关系到应用的响应速度和用户体验。本文将带你了解如何通过合理的索引设计、查询优化以及恰当的数据存储策略来提升数据库性能。我们将一起探索这些技巧背后的原理,并通过实际案例感受优化带来的显著效果。
28 4
|
19天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
36 2
|
19天前
|
监控 Java 数据库连接
在Java开发中,数据库连接管理是关键问题之一
在Java开发中,数据库连接管理是关键问题之一。本文介绍了连接池技术如何通过预创建和管理数据库连接,提高数据库操作的性能和稳定性,减少资源消耗,并简化连接管理。通过示例代码展示了HikariCP连接池的实际应用。
18 1
|
27天前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
9天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
24 1
|
11天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
26 4
|
18天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
85 1