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 ...
随机推荐
- 搭建uipath
我对windows也不太熟,也是第一次安装Uipath Orchestrator,希望有问题指出一起交流,可以留言,Uipath中文qq交流群:4656303241. 下载镜像 windows ser ...
- Python简单实现自动评论、自动点赞、自动关注脚本
一些哔哔: 今天的这个脚本,是一个别人发的外包,交互界面的代码就不在这里说了,但是可以分享下自动评论.自动点赞.自动关注.采集评论和视频的数据是如何实现的 开发环境 python 3.8 运行代码py ...
- NC202492 仓库选址
NC202492 仓库选址 题目 题目描述 牛能在某小城有了固定的需求,为了节省送货的费用,他决定在小城里建一个仓库,但是他不知道选在哪里,可以使得花费最小. 给出一个 \(m \times n\) ...
- 30m精度土壤类型、土壤质地、土壤有机质、土壤PH、土壤氮磷钾
数据下载链接:数据下载链接 引言 全国土壤类型.质地.养分及变化等信息产品分为土壤类型数据.土壤质地数据.土壤养分数据及土壤变化数据等.该类产品是基于野外调查和实地采样,结合历史数据,建立全国土壤类 ...
- zenmap安装
发现最新版的KALI不带zenmap了,下面是安装步骤: 安装包转换工具:sudo apt-get install alien fakeroot -y 下载并转换:https://nmap.org/d ...
- Linux快捷方式创建模板
1.创建快捷方式文件 sudo gedit /usr/share/applications/Navicat.desktop 模板: [Desktop Entry] Name=Navicat Exec= ...
- Eclipse Ctrl+鼠标左键不能查看源代码
查询当前项目的使用的java包版本. 找到java包相应版本的安装路径. 在 "Source Attachment"对话框下,选择"External location&q ...
- 基于yarn1.x的monorepo实践分享
背景介绍 几天前,晓东船长微信问我,你们团队有没有monorepo的实践,我很遗憾的告诉他没有,但这在我心里播下了一颗探索的种子,刚好最近老总要搞内蒙古的新项目,我和另一个前端兄弟组成双枪敢死队进行保 ...
- 洛谷 P2073 送花 treap 无指针
看了那么多题解都没做对,结果今早上按自己的思路和模板做了做,然后过了. 平衡树裸题 直接上代码: #include<bits/stdc++.h> #define rint register ...
- 数据结构(C语言版)严蔚敏->排序
@ 目录 1. 插入排序 1.1 直接插入排序 1.2 折半插入排序 1.3 希尔排序(Shell Sort) 2.交换排序 2.1 冒泡排序 2.2 快速排序 3. 选择排序 3.1 简单选择排序 ...