001从零开始入门Entity Framework Core——基础知识
Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。
一、什么是 Entity Framework Core 模型?
1、对于 EF Core,使用模型执行数据访问。 模型由实体类和表示数据库会话的上下文对象构成。 上下文对象允许查询并保存数据。
2、EF 支持以下模型开发方法:
- 从现有数据库生成模型。
- 对模型手动编码,使其符合数据库。
- 创建模型后,使用 EF 迁移从模型创建数据库。 模型发生变化时,迁移可让数据库不断演进。
二、安装 Entity Framework Core
1、Entity Framework Core (EF Core) 以 NuGet 包的形式提供。 应用程序所需的包取决于:
- 所使用的数据库系统类型(SQL Server、SQLite 等)
- 所需的 EF Core 功能
2、安装包的常规过程是:
- 确定数据库提供程序并安装相应的包
- 如果使用关系数据库提供程序,还需安装 Microsoft.EntityFrameworkCore 和 Microsoft.EntityFrameworkCore.Relational。 这有助于确保使用一致的版本,同时也意味着 NuGet 会在新的包版本发布时通知你。
- 或者确定所需的工具类型,并为此安装相应的包
3、总言之,要将 EF Core 添加到应用程序,请安装适用于要使用的数据库提供程序的 NuGet 包。
4、注意事项:
- 如果要生成 ASP.NET Core 应用程序,不需要安装内存中和 SQL Server 提供程序。 这些提供程序随 EF Core 运行时一起包含在当前版本的 ASP.NET Core 中。
- 要安装或更新 NuGet 包,可以使用 .NET Core 命令行界面 (CLI)、Visual Studio 包管理器对话框或 Visual Studio 包管理器控制台。
- 用于 EF Core 的第三方提供程序通常不随 EF Core 运行发布修补程序版本。 若要将使用第三方提供程序的应用程序升级到 EF Core 的修补程序版本,可能需要添加对单独的 EF Core 运行时组件(如 Microsoft.EntityFrameworkCore 和 Microsoft.EntityFrameworkCore.Relational)的直接引用。
- 请务必安装 Microsoft 提供的所有 EF Core 包的同一版本。 例如,如果安装了 5.0.3 版本的 Microsoft.EntityFrameworkCore.SqlServer,则所有其他 Microsoft.EntityFrameworkCore.* 包也必须为 5.0.3 版本。
- 此外,请确保所有外部包都与所使用的 EF Core 的版本兼容。 特别是,检查外部数据库提供程序是否支持你所使用的 EF Core 版本。 EF Core 的新主版本通常需要更新的数据库提供程序。
三、数据库提供程序
1、EF Core 通过使用“数据库提供程序”支持不同的数据库系统。 每个系统都有自己的数据库提供程序,而提供程序以 NuGet 包的形式提供。 应用程序应安装其中一个或多个提供程序包。
2、下表列出了常见的数据库提供程序。
| 数据库系统 | 包 |
|---|---|
| SQL Server 和 SQL Azure | Microsoft.EntityFrameworkCore.SqlServer |
| SQLite | Microsoft.EntityFrameworkCore.Sqlite |
| Azure Cosmos DB | Microsoft.EntityFrameworkCore.Cosmos |
| PostgreSQL | Npgsql.EntityFrameworkCore.PostgreSQL |
| MySQL | Pomelo.EntityFrameworkCore.MySql |
| EF Core 内存中数据库 | Microsoft.EntityFrameworkCore.InMemory |
四、扩展包
Microsoft 和第三方以 NuGet 包的形式发布了许多 EF Core 扩展。 常用包包括:
| 功能 | 包 | 附加依赖项 |
|---|---|---|
| 用于延迟加载和更改跟踪的代理 | Microsoft.EntityFrameworkCore.Proxies | Castle.Core |
| 对 SQL Server 的空间支持 | Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite | NetTopologySuite 和 NetTopologySuite.IO.SqlServerBytes |
| 对 SQLite 的空间支持 | Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite | NetTopologySuite 和 NetTopologySuite.IO.SpatiaLite |
| 对 PostgreSQL 的空间支持 | Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite | NetTopologySuite 和 NetTopologySuite.IO.PostGIS(通过 Npgsql.NetTopologySuite) |
| 对 MySQL 的空间支持 | Pomelo.EntityFrameworkCore.MySql.NetTopologySuite | NetTopologySuite |
五、其他包
其他 EF Core 包作为数据库提供程序包的依赖项进行拉取。 但是,建议为这些包添加显式包引用,这样 NuGet 在发布新版本时会提供通知。
| 功能 | 包 |
|---|---|
| EF Core 基本功能 | Microsoft.EntityFrameworkCore |
| 通用关系数据库功能 | Microsoft.EntityFrameworkCore.Relational |
| 用于 EF Core 特性等的轻型包。 | Microsoft.EntityFrameworkCore.Abstractions |
| EF Core 使用情况的 Roslyn 代码分析器 | Microsoft.EntityFrameworkCore.Analyzers |
| 没有原生 SQLite 依赖项的 EF Core SQLite 提供程序 | Microsoft.EntityFrameworkCore.Sqlite.Core |
六、EF Core 版本和计划
| Release | 目标 Framework | 支持截止时间 |
|---|---|---|
| EF Core 6.0 | .NET 6 | 2024 年 11 月 8 日 (LTS) |
| .NET Standard 2.1 | 2022 年 5 月 10 日过期 | |
| EF Core 3.1 | .NET Standard 2.0 | 2022 年 12 月 3 日 (LTS) |
| .NET Standard 2.1 | 2020 年 3 月 3 日过期 | |
| .NET Standard 2.0 | 过期时间:2019 年 12 月 23 日 | |
| .NET Standard 2.0 | 过期时间:2021 年 8 月 21 日* | |
| .NET Standard 2.0 | 过期时间:2018 年 10 月 1 日 | |
| .NET Standard 1.3 | 过期时间:2019 年 6 月 27 日 | |
| .NET Standard 1.3 | 过期时间:2019 年 6 月 27 日 |
七、EF Core 支持的 .NET 实现
下表提供了每个 .NET 实现的指南:
| EF Core | 3.1 | 5.0 | 6.0 |
|---|---|---|---|
| .NET & .NET Core | 3.1 | 5.0 | 6.0 |
| .NET Standard | 2.0 | 2.1 | |
| .NET Framework | 4.7.2 | ||
| Mono | 5.4 | 6.4 | |
| Xamarin.iOS | 10.14 | 12.16 | (使用 .NET 6) |
| Xamarin.Mac | 3.8 | 5.16 | (使用 .NET 6) |
| Xamarin.Android | 8.0 | 10.0 | (使用 .NET 6) |
| UWP | 10.0.16299 | (使用Windows 应用 SDK) | |
| Unity | 2018 年 1 月 | 2021.2 | TBD |
| Tizen | 4.0 | 6.0 | (使用 .NET 6) |
----------------------------------------------本篇文章到此结束-------------------------------------------
001从零开始入门Entity Framework Core——基础知识的更多相关文章
- 002从零开始入门Entity Framework Core——DbContext生存期、配置和初始化
阅读须知:本文为入门介绍.指引文章,所示代码皆为最简易(或仅为实现功能)的演示示例版本,不一定切实符合个人(企业)实际开发需求. 一.DbContext生存期 DbContext 的生存期从创建实例时 ...
- Entity Framework Core 入门(2)
安装 EF Core 将 EF Core 添加到不同平台和常用 IDE 中的应用程序的所需步骤汇总. 分步入门教程 无需具备 Entity Framework Core 或任何特定 IDE 的原有知识 ...
- Entity Framework Core 2.0 入门简介
不多说废话了, 直接切入正题. EF Core支持情况 EF Core的数据库Providers: 此外还即将支持CosmosDB和 Oracle. EFCore 2.0新的东西: 查询: EF.Fu ...
- Entity Framework Core(EF Core) 最简单的入门示例
目录 概述 基于 .NET Core 的 EF Core 入门 创建新项目 更改当前目录 安装 Entity Framework Core 创建模型 创建数据库 使用模型 基于 ASP.NET Cor ...
- Entity Framework Core 2.0 入门
该文章比较基础, 不多说废话了, 直接切入正题. 该文分以下几点: 创建Model和数据库 使用Model与数据库交互 查询和保存关联数据 EF Core支持情况 EF Core的数据库Provide ...
- 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 ...
- Entity Framework Core 中文入门文档
点击链接查看文档: Entity Framework Core 中文入门文档
- 使用Code First建模自引用关系笔记 asp.net core上使用redis探索(1) asp.net mvc控制器激活全分析 语言入门必学的基础知识你还记得么? 反射
使用Code First建模自引用关系笔记 原文链接 一.Has方法: A.HasRequired(a => a.B); HasOptional:前者包含后者一个实例或者为null HasR ...
- ASP.NET Core 配置 Entity Framework Core - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 配置 Entity Framework Core - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 配置 Entity Fram ...
随机推荐
- Kolla部署Pike版本的OpenStack-allinone云平台
1 openstack 概述 openstack概述 : OpenStack是一个NASA美国国家航空航天局和Rackspace合作研发 的,以Apache许可证授权,并且是一个自由软件和开放源代码项 ...
- 流程控制语句break
break语句 用于结束循环结构,通常与分支结构if一起使用 即非正常循环,在中间循环的时候直接退出 注意break打断的是循环语句,不是if语句 注意while循环中一般需要有改变变量这个操作,否则 ...
- 第十三天python3 生成器yield
生成器generator 生成器指的是生成器对象,可由生成器表达式得到,也可以使用yield关键字得到一个生成器函数,调用这个函数得到一个生成器对象: 生成器函数 函数体中包含yield语句的函数,返 ...
- Mysql 数据恢复流程 基于binlog redolog undolog
注:文中有个易混淆的地方 sql事务,即每次数据库操作生成的事务,这个事务trx_id只在undolog里存储,同时undolog维护了此事务是否完成的状态. 日志持久化事务,为了保证redolog和 ...
- 什么是WordPress
首先,假设您没有WordPress的经验: 我将从基础开始. 在本教程中,我将回答问题:"什么是WordPress?" 在这篇文章中,我将说明您可以在哪里获得WordPress以及 ...
- 【定时功能】消息的定时发送-基于RocketMQ
一.功能介绍 要实现一个消息的定时发送功能,也就是让消息可以在某一天某一个时间具体节点进行发送.而我们公司的业务场景是类似短信的业务,而且数量不小,用户会进行号码.消息内容.定时发送时间等信息的提交. ...
- python--函数--参数传入分类
1. 位置参数 调用函数时传入实际参数的数量和位置都必须和定义函数时保持一致. 2. 关键字参数 好处:不用记住形参位置. 所谓关键字就是"键-值"绑定,调用函数时,进行传递. 特 ...
- Vue3 computed && watch(watchEffect)
1 # Vue3 计算属性与监视 2 # 1.computed函数:与Vue2.x中的computed配置功能一致 3 inport {ref,computed,watch} from 'vue'; ...
- Javascript 函数声明、调用、闭包
1 # Javascript 函数声明.调用.闭包 2 # 一.函数声明 3 # 1.直接声明.浏览器在执行前,会先将变量和函数声明进行提升. 4 fn(); 5 function fn () { 6 ...
- java基础Synchronized关键字之对象锁
java中Synchronized关键字之对象锁 当有多个线程对一个共享数据进行操作时,需要注意多线程的安全问题. 多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同 ...