Entity Framework Core入门(看不懂,不掌握)

ASP.NET Core 入门教程 8、ASP.NET Core + Entity Framework Core 数据访问入门 一、前言 1、本教程主要内容 ASP.NET Core MVC 集成 EF Core 介绍&操作步骤 ASP.NET Core MVC 使用 EF Core + Linq to Entity 访问MySQL数据库 ASP.NET Core MVC 使用 EF Core + 原生SQL访问MySql数据库 EF Core + MySQL数据库插入数据后获取自增列的值 Entity Fr... 阅读详情

将创建一个 .NET Core 控制台应用,该应用使用 Entity Framework Core 对 SQLite 数据库执行数据访问。

 

先决条件

.NET Core SDK

Visual Studio 2019版本16.3或更高版本

.NET Core跨平台开发

.NET 6.0运行时(LTS)和.NET Core 3.1运行时(LTS)

创建新项目

打开 Visual Studio

单击“创建新项目”

 

选择带有 C# 标记的“控制台应用 (.NET Core)” ,然后单击“下一步”

 

 

输入“EFGetStarted”作为名称,然后单击“创建”

 

安装EntityFramework Core

要安装 EF Core,请为要作为目标对象的 EF Core 数据库提供程序安装程序包。 本教程使用 SQLite 的原因是,它可在 .NET Core 支持的所有平台上运行。

“工具”>“NuGet 包管理器”>“包管理器控制台”。

 运行以下命令:

Install-Package Microsoft.EntityFrameworkCore.Sqlite

提示:还可以通过右键单击项目并选择“管理 NuGet 程序包”来安装包。

 

每个包都由其所有者许可给你。NuGet 不负责第三方包,也不授予其许可证。一些包可能包括受其他许可证约束的依赖关系。单击包源(源) URL 可确定任何依赖关系。

程序包管理器控制台主机版本 6.3.0.131

键入 "get-help NuGet" 可查看所有可用的 NuGet 命令。

PM> Install-Package Microsoft.EntityFrameworkCore.Sqlite
正在还原 C:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\C#\EFGetStarted\EFGetStarted\EFGetStarted.csproj 的包...
  GET https://api.nuget.org/v3-flatcontainer/microsoft.entityframeworkcore.sqlite/index.json
  OK https://api.nuget.org/v3-flatcontainer/microsoft.entityframeworkcore.sqlite/index.json 284 毫秒
  GET https://api.nuget.org/v3-flatcontainer/microsoft.entityframeworkcore.sqlite/6.0.8/microsoft.entityframeworkcore.sqlite.6.0.8.nupkg
  OK https://api.nuget.org/v3-flatcontainer/microsoft.entityframeworkcore.sqlite/6.0.8/microsoft.entityframeworkcore.sqlite.6.0.8.nupkg 67 毫秒
已通过内容哈希 SCDjo2xtsL/7h1ugbHR7kOrSsBNcoGvyeuyfAIQ1yWJh5pRYOj/EOV8vTkzXY6LylnbL+hH1+ZPlV3e1cakiuw== 从 https://api.nuget.org/v3/index.json 安装 Microsoft.EntityFrameworkCore.Sqlite 6.0.8 。
Install-Package : NU1202: 包 Microsoft.EntityFrameworkCore.Sqlite 6.0.8 与 netcoreapp3.1 (.NETCoreApp,Version=v3.1) 不兼容。 包 Microsoft.EntityFrameworkCore.Sql
ite 6.0.8 支持: net6.0 (.NETCoreApp,Version=v6.0)
所在位置 行:1 字符: 1
+ Install-Package Microsoft.EntityFrameworkCore.Sqlite
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Install-Package], Exception
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
 
Install-Package : 程序包还原失败。正在回滚“EFGetStarted”的程序包更改。
所在位置 行:1 字符: 1
+ Install-Package Microsoft.EntityFrameworkCore.Sqlite
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Install-Package], Exception
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
 
已用时间: 00:00:06.1956456
PM> 

 

创建模型

定义构成模型的上下文类和实体类。

右键单击项目,然后选择“添加”>“类”

 

输入“Model.cs”作为名称,然后单击“添加”

将此文件的内容替换为以下代码

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    public string DbPath { get; }

    public BloggingContext()
    {
        var folder = Environment.SpecialFolder.LocalApplicationData;
        var path = Environment.GetFolderPath(folder);
        DbPath = System.IO.Path.Join(path, "blogging.db");
    }

    // The following configures EF to create a Sqlite database file in the
    // special "local" folder for your platform.
    protected override void OnConfiguring(DbContextOptionsBuilder options)
        => options.UseSqlite($"Data Source={DbPath}");
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }

    public List<Post> Posts { get; } = new();
}

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; }
}

 

创建数据库

使用迁移创建数据库。

在“包管理器控制台(PMC)”中,运行以下命令

Install-Package Microsoft.EntityFrameworkCore.Tools
Add-Migration InitialCreate
Update-Database

这会安装 EF Core 的 PMC 工具。 Add-Migration 命令为迁移搭建基架,以便为模型创建一组初始表。 Update-Database 命令创建数据库并向其应用新的迁移。

PM> Install-Package Microsoft.EntityFrameworkCore.Tools
正在还原 C:\Users\a-xiaobodou\OneDrive - Microsoft\Projects\C#\EFGetStarted\EFGetStarted\EFGetStarted.csproj 的包...
  GET https://api.nuget.org/v3-flatcontainer/microsoft.entityframeworkcore.tools/index.json
  OK https://api.nuget.org/v3-flatcontainer/microsoft.entityframeworkcore.tools/index.json 507 毫秒
  GET https://api.nuget.org/v3-flatcontainer/microsoft.entityframeworkcore.tools/6.0.8/microsoft.entityframeworkcore.tools.6.0.8.nupkg
  OK https://api.nuget.org/v3-flatcontainer/microsoft.entityframeworkcore.tools/6.0.8/microsoft.entityframeworkcore.tools.6.0.8.nupkg 70 毫秒
已通过内容哈希 +wjKy16Vdz/ArHFvJZ1xXG241OZMFbTY0lS8vTQL4tfo8slX/h1J9PkzbWJjG6G7SMharUwvigIo+vrMO628Xg== 从 https://api.nuget.org/v3/index.json 安装 Microsoft.EntityFrameworkCore.Tools 6.0.8 。
Install-Package : NU1202: 包 Microsoft.EntityFrameworkCore.Tools 6.0.8 与 netcoreapp3.1 (.NETCoreApp,Version=v3.1) 不兼容。 包 Microsoft.EntityFrameworkCore.Tool
s 6.0.8 支持: net6.0 (.NETCoreApp,Version=v6.0)
所在位置 行:1 字符: 1
+ Install-Package Microsoft.EntityFrameworkCore.Tools
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Install-Package], Exception
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
 
Install-Package : 程序包还原失败。正在回滚“EFGetStarted”的程序包更改。
所在位置 行:1 字符: 1
+ Install-Package Microsoft.EntityFrameworkCore.Tools
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Install-Package], Exception
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand
 
已用时间: 00:00:05.5803966
PM> Add-Migration InitialCreate
Add-Migration : 无法将“Add-Migration”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ Add-Migration InitialCreate
+ ~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Add-Migration:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
 
PM> Update-Database
Update-Database : 无法将“Update-Database”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ Update-Database
+ ~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Update-Database:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
 
PM> 

 

创建、读取、更新和删除

打开 Program.cs 并将内容替换为以下代码:

using System;
using System.Linq;

using var db = new BloggingContext();

// Note: This sample requires the database to be created before running.
Console.WriteLine($"Database path: {db.DbPath}.");

// Create
Console.WriteLine("Inserting a new blog");
db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
db.SaveChanges();

// Read
Console.WriteLine("Querying for a blog");
var blog = db.Blogs
    .OrderBy(b => b.BlogId)
    .First();

// Update
Console.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();

// Delete
Console.WriteLine("Delete the blog");
db.Remove(blog);
db.SaveChanges();

运行应用

“调试”>“开始执行(不调试)”

 

 

C# Entity Framework Core 中的 Include 和 ThenInclude 详解 今天我要分享 Entity Framework Core 中两个非常重要的方法:`Include` 和 `ThenInclude` 阅读详情

相关推荐

Entity Framework Core (EF Core) 技术报告

摘要:Entity Framework Core (EF Core) 是微软推出的轻量级、跨平台ORM框架,通过.NET对象与数据库交互,减少SQL编写需求。核心功能包括对象映射、关系映射、查询翻译和变更跟踪。广泛应用在电商、CMS、ERP、移动应用和医疗系统中,支持复杂数据建模和高效查询。学习曲线中等,需掌握C#、LINQ和数据库知识,但官方文档丰富。示例展示了博客系统的实体定义、DbContext配置和CRUD操作。EF Core是.NET项目关系型数据库访问的主流选择,显著提升开发效率。

ponygame的博客 681

【C# .NET 】使用 Entity Framework Core 操作sqlite数据库

通过EF Core 操作sqlite数据库

cxyhjl的博客 4629

1. Entity Framework Core 简史

Entity Framework和Entity Framework Core(EF Core)是一个提供了实体-关系映射的架构,通过它们,可以创建映射到数据库表的类型,使用LINQ创建数据库查询,创建和更新对象,把它们写入数据库。

singhwong 351

【使用 SQLite 开始使用Entity Framework Core】

在我之前的文章创建SQLite数据库的简单方法中,我谈到了数据库的选择,并专注于最简单的选项,即SQLite。但即使我们选择了正确的数据库,我们仍然需要在设计和在应用程序端的集成方面进行工作。以前的做法是在应用程序中使用数据库驱动程序,定义连接,然后从您的代码中执行SQL命令和查询。当您从查询执行中获取数据时,需要解析它们,然后将它们插入到您的对象中。这是一项繁重的任务。随着时间的推移,出现了对象关系映射,即ORM。ORM是对象关系映射工具。

beichengwuyi的博客 1149

Rider使用Entity FrameWork Core 添加 DbMigration

前言 在gitee上看到 Admin.Net 框架 于是 Clone下来学习一波。Admin.Net 的架构层级如下: 其中根据Admin.Net 的文档介绍处理好自身的数据库连接配置,安装相应的包。默认是sqlite,我这里改为Mysql 之后就可以开始添加 Migration了。 首先看一下如何在 visual studio 里面添加? 打开包管理器控制台。 将项目启动项设置为项目入口,Admin.NET.Web.Entry,将控制台里的默认项目选择.NET.DataBase.Mi.

crist5的博客 1847

Entity Framework Core:入门教程与实践

本文还有配套的精品资源,点击获取 简介:Entity Framework Core是.NET平台上的开源跨平台ORM框架,旨在简化.NET数据访问。本入门课程将指导初学者掌握EF Core的核心概念和操作方法,包括DbContext的使用、实体定义、数据库迁移、代码优先设计、LINQ查询、性能优化以及如何与多种数据库系统交互。学习者将通过实践了解如何管理实体生命周期、管理数...

weixin_35754676的博客 2386

EntityFrameworkCore的使用教程

一、先安装对应的数据库映射工具。一般对于的数据库映射工具包含EntityFrameworkCore的依赖。 1.一般EntityFrameworkCore(ORM映射工具)安装在你的数据项目工程中,这里我通过nuget安装的sqlserver的包。对应的数据和安装对应的包就行。包名如下: Microsoft.EntityFrameworkCore.SqlServer 2.然后我们建立好对应的数据Model 3.Model建立完成后,我们建立数据库上下文文件如下: 该类需要继承DbContext,跟数据库的

csdn2990的博客 9807

Entity-Framework:使用SQLite和Entity Framework Core创建数据库

Entity-Framework:使用SQLite和Entity Framework Core创建数据库

Microsoft.EntityFrameworkCore.Tools Migration相关命令

Microsoft.EntityFrameworkCore.Tools Migration相关命令 dd-Migration Adds a new migration. Drop-Database Drops the database. Get-DbContext Gets information about a DbContext type. Remove-Migration

cao919的专栏Net 545

霍尔式流量计背后的技术和算法

例如,在一项实验中,当流量低于最小操作范围(0.250 L/min)时,误差比其他流量大,但仍然在95%的精度范围内可接受。例如,在Honeywell电子学的测试中,使用30英寸水柱的压力计和热电偶测量气体特性,记录并计算实际和理论质量流量,以确定修正系数。霍尔式流量计的校准系数是通过一系列精确的测量和计算步骤确定的,以确保其测量结果的准确性和可靠性。霍尔式流量计的校准系数是通过严格的环境条件、精确的测量步骤和实验数据确定的。其中,Qs是标尺介质的流量,K是修正系数,Qm是用户介质的流量。

百态·数智思维 | 聚焦大数据、量化与未来AI 1233

Redis【实战篇】---- 分布式锁-redission

重入问题:重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中,可重入锁的意义在于防止死锁,比如HashTable这样的代码中,他的方法都是使用synchronized修饰的,假如他在一个方法内,调用另一个方法,那么此时如果是不可重入的,不就死锁了吗?所以可重入锁他的主要意义是防止死锁,我们的synchronized和Lock锁都是可重入的。不可重试:是指目前的分布式只能尝试一次,我们认为合理的情况是:当线程在获得锁失败后,他应该能再次尝试获得锁。

是微风,是晚霞,是无可替代 1万+

【Entity Framework】之Entity Framework Core入门

前言 本博客翻译自微软官方文档 :https://docs.microsoft.com/en-us/ef/core/get-started/?tabs=visual-studio 正文 在本教程中,您将创建一个.NET Core控制台应用程序,该应用程序使用Entity Framework Core对SQLite数据库执行数据访问。 您可以通过在Windows上使用Visual Studio或在Windows,macOS或Linux上使用.NET Core CLI来遵循本教程。 在GitHub上.

醉逍遥的博客 768

时序异常检测汇总

时序异常检测

Mark_Australia的博客 1万+

Entity Framework Core基础详解

摘要:本文介绍了Entity Framework Core的基础知识与应用。EF Core是一个ORM工具,允许开发者通过对象操作数据库,简化SQL编写。文章详细讲解了开发环境搭建、实体类创建、DbContext配置以及数据库迁移步骤(Add-Migration和Update-Database)。同时展示了增删改查操作示例,对比了Data Annotation和Fluent API两种配置方式,推荐使用Fluent API以实现更好的职责分离。通过约定配置可实现表名、列名等默认映射规则。

weixin_40507158的博客 1057

Stata:手动安装ivreghdfe包的完整指南与常见问题解决

本文提供了Stata中手动安装ivreghdfe包的完整指南,包括准备工作、详细安装步骤及常见问题解决方案。ivreghdfe作为处理高维固定效应模型的强大工具,依赖ftools、reghdfe和ivreg2三个核心组件,手动安装可避免版本冲突问题。文章还分享了进阶使用技巧,如并行计算加速和保存固定效应估计值,助力用户高效完成工具变量回归分析。

weixin_29251131的博客 926

企业级智能问数开发的核心痛点与技术聚焦

本文介绍了企业级智能问数系统开发的三大核心问题和解决方案:语义解析不精准、SQL生成不健壮、企业适配难落地。文章从开发者视角出发,详细拆解了NLU语义解析、SQL生成、对话记忆、企业级适配四大核心模块的技术实现。 在技术选型方面,推荐了LangChain+DeepSeek-R1、FAISS/Milvus、SQLAlchemy等工具链组合。针对企业级需求,重点讲解了: 语义解析模块的意图识别优化和要素提取技术 SQL生成模块的语法校验与性能优化方案 对话记忆模块的Redis存储实现 企业级适配的三层防护体系和

lamehsl的专栏 1046

(Entity Framework Core入门)一、EFCore简介

1.说明: 一种ORM(Object Relational Mapper),用于程序中的class类和数据库中的表互相之间进行建立映射关系 2.优势 1)生产力 2)支多种数据库 3)可以使用Linq 4)注重领域(Domain),而不是数据库 3.支持框架 1).NET Core2.X 2).NET 4.6.1+ 3)UWP 4)Xamarin 4....

angyi6424的博客 3122

毫米波雷达dd-mimo中发射天线辐射方向图变化

本文详细介绍了dd-mimo的相位调制原理,以及分离天线的办法,最后演示了在dd-mimo中因为相位调制带来的辐射方向图的变化。

weixin_44555637的博客 1167

Entity Framework Core(EF Core) 最简单的入门示例

目录 概述 基于 .NET Core 的 EF Core 入门 创建新项目 更改当前目录 安装 Entity Framework Core 创建模型 创建数据库 使用模型 基于 ASP.NE...

ai9312的博客 1520

MAX96724解串器拨码配置实战:从COAX/GMSL2模式到IIC地址设定

本文详细解析了MAX96724解串器的拨码配置方法,涵盖电源管理模式、I2C地址设定及COAX/GMSL2视频传输模式。通过实战案例和故障排查技巧,帮助工程师快速掌握xcDeserializer4.0版本的配置要点,避免常见错误,提升车载摄像头和工业视觉系统的调试效率。

weixin_29243279的博客 574

ROM和RAM在单片机程序运行理解

ROM和RAM是电子设备中两种核心存储组件,主要区别在于:ROM用于长期存储系统程序、用户文件等固定数据,断电后数据不丢失,但写入速度较慢;RAM则用于临时存储运行中的程序和数据,读写速度快但断电后数据会清空。在单片机中,ROM存储程序代码和常量,RAM存储运行时的变量和数据。两者协同工作,ROM如同"永久档案库"保存必要信息,RAM则像"临时工作台"支持高速运算,共同确保设备正常运行。

qq_37999850的博客 1618

DependencyInjection实战教程:在Entity Framework Core中优雅管理依赖

DependencyInjection是GitHub加速计划中的重要项目,提供了ASP.NET Core和Entity Framework Core使用的通用依赖注入抽象。本教程将带你快速掌握如何在Entity Framework Core中利用DependencyInjection实现依赖的优雅管理,让你的代码更具可维护性和扩展性。 ## 一、DependencyInjection核心概念快速

gitblog_01199的博客 770

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Visual Studio 2022 安装使用:Entity Framework Core

本文介绍了Entity Framework Core(EF Core)的基本概念和安装使用方法。EF Core是一种ORM框架,能够将C#类映射到数据库表,简化数据库操作。文章详细讲解了如何安装EF Core及其数据库提供程序包,通过示例演示了声明实体类、配置DbContext以及三种配置数据库连接字符串的方式(直接在代码中配置、使用appsettings.json文件配置)。该教程适合C#开发者快速上手EF Core,提高数据库开发效率。

学无止境 1446

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ENTITY FRAMEWORK CORE入门:三、EFCore的CURD

在ENTITY FRAMEWORK CORE入门:二中已经对EF的操作流程有了一个大致的了解了,我们就可以上手来CURD了,迫不及待的搓手手,哈哈哈哈。 在HomeController中添加如下代码 public class HomeController : Controller { private readonly MyContext _context; ...

Kilven 453

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Entity Framework Core 学习

记录EFCore学习记录

weixin_44107864的博客 906

ENTITY FRAMEWORK CORE入门:二、再探EFCore的操作

ENTITY FRAMEWORK CORE入门:二、再探EFCore的操作

Kilven 1400
上一篇: 日期和时间(C#)
下一篇: 2022年8月15日:--使用 ASP.NET Core、最小 API 和 .NET 6 创建--结合使用数据库和最小 API、Entity Framework Core 和 ASP.NET Core
DXB2021
博客等级 码龄5年 307粉丝 289原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值