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
相关文章
|
17天前
|
存储 前端开发 关系型数据库
秀啊,用Python快速开发在线数据库更新修改工具
秀啊,用Python快速开发在线数据库更新修改工具
|
17天前
|
前端开发 数据库 Python
用Python轻松开发数据库取数下载工具
用Python轻松开发数据库取数下载工具
|
14天前
|
数据库 C# 开发者
WPF开发者必读:揭秘ADO.NET与Entity Framework数据库交互秘籍,轻松实现企业级应用!
【8月更文挑战第31天】在现代软件开发中,WPF 与数据库的交互对于构建企业级应用至关重要。本文介绍了如何利用 ADO.NET 和 Entity Framework 在 WPF 应用中访问和操作数据库。ADO.NET 是 .NET Framework 中用于访问各类数据库(如 SQL Server、MySQL 等)的类库;Entity Framework 则是一种 ORM 框架,支持面向对象的数据操作。文章通过示例展示了如何在 WPF 应用中集成这两种技术,提高开发效率。
29 0
|
14天前
|
Java 数据库连接 数据库
告别繁琐 SQL!Hibernate 入门指南带你轻松玩转 ORM,解锁高效数据库操作新姿势
【8月更文挑战第31天】Hibernate 是一款流行的 Java 持久层框架,简化了对象关系映射(ORM)过程,使开发者能以面向对象的方式进行数据持久化操作而无需直接编写 SQL 语句。本文提供 Hibernate 入门指南,介绍核心概念及示例代码,涵盖依赖引入、配置文件设置、实体类定义、工具类构建及基本 CRUD 操作。通过学习,你将掌握使用 Hibernate 简化数据持久化的技巧,为实际项目应用打下基础。
35 0
|
14天前
|
Java 开发者 前端开发
Struts 2、Spring MVC、Play Framework 上演巅峰之战,Web 开发的未来何去何从?
【8月更文挑战第31天】在Web应用开发中,Struts 2框架因强大功能和灵活配置备受青睐,但开发者常遇配置错误、类型转换失败、标签属性设置不当及异常处理等问题。本文通过实例解析常见难题与解决方案,如配置文件中遗漏`result`元素致页面跳转失败、日期格式不匹配需自定义转换器、`&lt;s:checkbox&gt;`标签缺少`label`属性致显示不全及Action中未捕获异常影响用户体验等,助您有效应对挑战。
32 0
|
14天前
|
Java 前端开发 Spring
技术融合新潮流!Vaadin携手Spring Boot、React、Angular,引领Web开发变革,你准备好了吗?
【8月更文挑战第31天】本文探讨了Vaadin与Spring Boot、React及Angular等主流技术栈的最佳融合实践。Vaadin作为现代Java Web框架,与其他技术栈结合能更好地满足复杂应用需求。文中通过示例代码展示了如何在Spring Boot项目中集成Vaadin,以及如何在Vaadin项目中使用React和Angular组件,充分发挥各技术栈的优势,提升开发效率和用户体验。开发者可根据具体需求选择合适的技术组合。
25 0
|
14天前
|
数据库 Java 数据库连接
玩转Play Framework的秘密武器:Ebean ORM带你解锁高效数据库操作新姿势,让你的代码从此飞起来!
【8月更文挑战第31天】Play Framework 以其简洁的 API 和高效开发体验著称,Ebean ORM 则是其推荐的对象关系映射(ORM)工具之一。Ebean 可将 Java 对象轻松映射到数据库表,简化数据库交互。本文将指导你在 Play Framework 中使用 Ebean ORM 进行数据库操作,涵盖项目创建、依赖引入、数据库配置、模型定义及 CRUD 操作,并通过示例代码展示实现过程。通过这些步骤,你将学会如何利用 Ebean 的丰富功能,如事务管理、查询构建等,提升 Web 应用的数据库交互能力。
25 0
|
14天前
|
数据库 测试技术 开发者
Play Framework的测试魔法:让代码在舞台上翩翩起舞,确保应用质量的幕后英雄!
【8月更文挑战第31天】Play Framework不仅以其高效开发与部署流程著称,还内置了强大的测试工具,提供全面的测试支持,确保应用高质量和稳定性。本文将详细介绍如何在Play Framework中进行单元测试和集成测试,涵盖`WithApplication`、`WithServer`及`WithDatabase`等类的使用方法,并通过示例代码手把手教你如何利用Play的测试框架。无论是单元测试、集成测试还是数据库操作测试,Play Framework均能轻松应对,助你提升应用质量和开发效率。
19 0
|
14天前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
81 0