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 ...
随机推荐
- MySQL根据表前缀批量修改、删除表
注意:请先调试好,以及做好备份,再执行操作. 批量修改表 批量给前缀为 xushanxiang_content_ 的表增加一个 username 的字段: SELECT CONCAT('ALTER T ...
- Java中时间方法大全01(持续更新)
下面这些方法都可以封装到一个工具类中 /** * 获取当前时间的时间戳 */ public static int getCurrentTimeIntValue() { return (int) (Sy ...
- 使用C#编程语言开发Windows Service服务
转载-https://www.cnblogs.com/yubao/p/8443455.html Create Windows Service project using Visual Studio C ...
- Codeforces Round #779 (Div. 2)
A 题目连接 题目大意 给一个01串,其中每一个长度大于等于2的子区间中0的数量不大于1的数量,最少插入多少1 思路 寻找 00 和 010 00 -->0110 加2 010 --&g ...
- 一个月后,我们又从 MySQL 双主切换成了主 - 从!
这是悟空的第 157 篇原创文章 官网:www.passjava.cn 你好,我是悟空. 一.遇到的坑 一个月前,我们在测试环境部署了一套 MySQL 高可用架构,也就是 MySQL 双主 + Kee ...
- Identity Server 4资源拥有者密码认证控制访问API
基于上一篇文章中的代码进行继续延伸,只需要小小的改动即可,不明白的地方可以先看看本人上一篇文章及源码: Identity Server 4客户端认证控制访问API 一.QuickStartIdenti ...
- 【机器学习基础】——另一个视角解释SVM
SVM的另一种解释 前面已经较为详细地对SVM进行了推导,前面有提到SVM可以利用梯度下降来进行求解,但并未进行详细的解释,本节主要从另一个视角对SVM进行解释,首先先回顾之前有关SVM的有关内容,然 ...
- Linux系统下安装windows字体笔记
源文档地址:https://www.e-iceblue.cn/spiredocforjavaconversion/word-to-pdf-font-issue.html windows字体路径:C:\ ...
- 技术分享 | 在MySQL对于批量更新操作的一种优化方式
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 作者:景云丽.卢浩.宋源栋 GreatSQL社区原创内容未经授权不得随意使用,转 ...
- [HFCTF2020]EasyLogin-1|JWT身份伪造
1.打开之后只有一个登陆界面和注册界面,右键检查发现app.js代码,结果如下: app.js代码如下: /** * 或许该用 koa-static 来处理静态文件 * 路径该怎么配置?不管了先填个根 ...