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

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 【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
相关文章
|
23天前
|
SQL 定位技术 数据库
深入探索Django ORM:高效数据库操作的秘诀####
本文旨在为读者揭开Django ORM(对象关系映射)的神秘面纱,通过一系列生动的比喻和详实的案例,深入浅出地讲解其核心概念、工作原理及高级特性。我们将一起探讨如何利用Django ORM简化数据库交互,提升开发效率,同时确保数据的一致性和安全性。不同于传统的技术文档,本文将以故事化的形式,带领读者在轻松愉快的氛围中掌握Django ORM的精髓。 ####
|
22小时前
|
存储 JSON 测试技术
【HarmonyOS Next开发】云开发-云数据库(二)
实现了云侧和端侧的云数据库创建、更新、修改等操作。这篇文章实现调用云函数对云数据库进行增删改查。
19 9
|
1月前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
142 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
1月前
|
存储 SQL API
探索后端开发:构建高效API与数据库交互
【10月更文挑战第36天】在数字化时代,后端开发是连接用户界面和数据存储的桥梁。本文深入探讨如何设计高效的API以及如何实现API与数据库之间的无缝交互,确保数据的一致性和高性能。我们将从基础概念出发,逐步深入到实战技巧,为读者提供一个清晰的后端开发路线图。
|
1月前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
1月前
|
存储 SQL 数据库
深入浅出后端开发之数据库优化实战
【10月更文挑战第35天】在软件开发的世界里,数据库性能直接关系到应用的响应速度和用户体验。本文将带你了解如何通过合理的索引设计、查询优化以及恰当的数据存储策略来提升数据库性能。我们将一起探索这些技巧背后的原理,并通过实际案例感受优化带来的显著效果。
48 4
|
1月前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
66 2
|
1月前
|
监控 Java 数据库连接
在Java开发中,数据库连接管理是关键问题之一
在Java开发中,数据库连接管理是关键问题之一。本文介绍了连接池技术如何通过预创建和管理数据库连接,提高数据库操作的性能和稳定性,减少资源消耗,并简化连接管理。通过示例代码展示了HikariCP连接池的实际应用。
21 1
|
2天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
10 3
|
2天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
14 3