当前位置: 首页 > news >正文

.NET Core EFCore零基础快速入门简单使用

一、什么是 Entity Framework (EF) Core

Entity Framework (EF) Core 是轻量化、可扩展和跨平台版的对象关系映射程序 (O/RM)数据访问技术,。 它将开发人员从编写大量 SQL 语句中解放出来。

二、EF的相关程序包

Microsoft.EntityFrameworkCore 核心程序包,封装了关键的核心代码,使用EF必须引用这个包

Microsoft.EntityFrameworkCore.Design 设计包,用于在命令行工具下EF Core开发的工具套件

Microsoft.EntityFrameworkCore.Tools 用于数据库的生成、迁移、生成表等

在 PMC 中安装 Microsoft.EntityFrameworkCore.Tools 包,再次执行就可以了。

Install-Package Microsoft.EntityFrameworkCore.Tools

问题产生原因:

ASP.NET Core 2.1以上的版本中,Microsoft.EntityFrameworkCore.Tools包包含在Microsoft.AspNetCore.App 元包。

而 ASP.NET Core 2.1 以下的版本中需要手动引用 Microsoft.EntityFrameworkCore.Tools包

三、EF Core支持的数据库引擎:SqlServer、Sqlite、PostgreSQL、MySql、Oracle等主流数据库,不同的数据库需要EF Core数据库提供程序支持。

微软维护的数据库程序包

Microsoft.EntityFrameworkCore.SqlServer

Microsoft.EntityFrameworkCore.Sqlite

Microsoft.EntityFrameworkCore.InMemory

Microsoft.EntityFrameworkCore.Cosmos

四、使用流程

1、在项目里添加安装数据库程序包,我这里使用MySql数据库,管理Nuget程序包添加Microsoft.EntityFrameworkCore.Design、Pomelo.EntityFrameworkCore.MySql的引用后已经包含了Microsoft.EntityFrameworkCore的相关依赖

2、创建数据库实体映射类

    public class Blog{public int BlogId { get; set; }public string Url { get; set; }public List<Post> Posts { get; } = new List<Post>();}
    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; }}

3、新建一个继承DbContext的类作用是配置数据连接、操作数据库表等信息

    public class BloggingContext: DbContext{/// <summary>/// Blogs表的操作属性/// </summary>public DbSet<Blog> Blogs { get; set; }/// <summary>/// Posts/// </summary>public DbSet<Post> Posts { get; set; }/// <summary>/// 配置数据连接信息/// </summary>/// <param name="optionsBuilder"></param>protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){optionsBuilder.UseMySql("你的数据库连接字符串");base.OnConfiguring(optionsBuilder);}}

4、配置EF Core

在项目中使用EF Core,需要在Startup.cs中配置服务,并在DbContext中定义数据上下文。

// 配置EF Core服务
public void ConfigureServices(IServiceCollection services)
{services.AddDbContext<ApplicationDbContext>(options =>options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}

5、添加数据库迁移文件:启动程序包管理控制台,输入以下命令就行,自己到数据库查看结果是否成功

 
1.Add-Migration initialCreate
2.Update-database
在.NET Core项目中,使用Entity Framework Core进行数据库迁移时,Add-Migration 命令是用来创建一个新的迁移文件的。当你想要初始化数据库架构时,可以使用 InitialCreate 作为迁移名称。以下是如何使用这个命令的步骤:1. 打开命令行界面
首先,打开你的命令行界面(例如:命令提示符、PowerShell、或者终端)。2. 导航到项目目录
使用 cd 命令导航到你的.NET Core项目的根目录。例如:cd path\to\your\project
3. 使用 Add-Migration 命令
在项目目录下,运行以下命令来创建一个名为 InitialCreate 的迁移。确保你的项目是.NET Core项目,并且已经安装了Entity Framework Core工具。dotnet ef migrations add InitialCreate
这条命令会生成一个新的迁移文件,通常位于 Migrations 文件夹下,文件名类似于 [日期时间]InitialCreate.cs。这个文件包含了创建数据库所需的所有操作。4. 查看迁移文件
生成的迁移文件将包含一系列的 Up 和 Down 方法,分别用于应用和撤销迁移。例如:protected override void Up(MigrationBuilder migrationBuilder)
{migrationBuilder.CreateTable(name: "YourTableName",columns: table => new{// 列定义},constraints: table =>{// 约束定义});
}protected override void Down(MigrationBuilder migrationBuilder)
{migrationBuilder.DropTable(name: "YourTableName");
}
5. 应用迁移到数据库
创建迁移后,你可以使用以下命令将迁移应用到数据库:dotnet ef database update
这将会根据迁移文件中的指令来创建或更新数据库架构。

6、数据库:增、读、删、改操作

            using (var db = new BloggingContext()){// CreateConsole.WriteLine("Inserting a new blog");db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });db.SaveChanges();// ReadConsole.WriteLine("Querying for a blog");var blog = db.Blogs.OrderBy(b => b.BlogId).First();// UpdateConsole.WriteLine("Updating the blog and adding a post");blog.Url = "https://devblogs.microsoft.com/dotnet";blog.Posts.Add(new Post{Title = "Hello World",Content = "I wrote an app using EF Core!"});db.SaveChanges();// DeleteConsole.WriteLine("Delete the blog");db.Remove(blog);db.SaveChanges();}

http://www.lryc.cn/news/591631.html

相关文章:

  • MyUI1.0全新现代化 Vue.js 组件库框架上线
  • Bell不等式赋能机器学习:微算法科技MLGO一种基于量子纠缠的监督量子分类器训练算法技术
  • mongodb-org-server_8.0.11_amd64.deb 这个文件怎么安装
  • MySQL配置性能优化
  • 3D材质总监的“光影魔法”:用Substance Sampler AI,“擦除”照片中的光影
  • 云原生技术与应用-Kubernetes架构原理与集群环境部署
  • AI驱动,精准计算光伏电站每一小时的发电量
  • Android设备标识符详解:IMEI、ANDROID_ID与OAID
  • 深度解析:基于EasyX的C++黑白棋AI实现 | 算法核心+图形化实战
  • 当下主流摄像头及其核心参数详解
  • Python22 —— 标准库(random库)
  • InfluxDB 3与Apache Parquet:打造高性能时序数据存储与分析解决方案
  • CISP-PTE 练习题(完整一套)
  • 专业云端视觉计算解决方案:云渲染云电脑
  • Transformer从入门到精通
  • JxBrowser 8.9.2 版本发布啦!
  • 基于强化学习的人机协同教学角色分配优化与课堂参与度建模研究
  • Ubuntu FTP服务搭建与配置
  • Qt软键盘
  • Redis学习-03重要文件及作用、Redis 命令行客户端
  • Rabbitmq Direct Exchange(直连交换机)多个消费者,配置相同的key ,队列,可以保证只有一个消费者消费吗
  • IAR编译后处理 并复制日期
  • QT跨平台应用程序开发框架(10)—— Qt窗口
  • 《每日AI-人工智能-编程日报》--2025年7月17日
  • 突破AI模型访问的“光标牢笼”:长上下文处理与智能环境隔离实战
  • 记录timesfm2.0复现及调优
  • Shell编程简介
  • 解决leetcode第3614题用特殊操作处理字符串II
  • DolphinScheduler 如何高效调度 AnalyticDB on Spark 作业?
  • Redis学习-02安装Redis(Ubuntu版本)、开启远程连接