第一单元 ORM 介绍

这篇具有很好参考价值的文章主要介绍了第一单元 ORM 介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需要有的知识点:

  1. c# 基础以及c#高级基础

  2. Ado.net 基础

  3. SqlServer 以及MySQL (都需要高级部分)

  4. Asp.net Mvc Core 基础

 

1. 新手的烦恼

(1) SQL 拼不对,错还不会找

(2) 开发效率低

(3) 如果发现字段需要重命名,得挨个地方去修改

(4) 老板说要把SQLServer换成MySQL数据库,并且需要快速上线,此时你想的不是快速上线,而是快速离职

 

ORM 框架基本解决了上述的所有问题。

 

2. 什么是ORM

ORM(Object-relational mapping),中文翻译为对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。

第一单元  ORM 介绍

 

ORM框架的优/缺点

优点:

  1. 提高开发效率

  2. 更符合面向对象思想

  3. 可以快速重命名

  4. 可以无缝切换数据库

缺点:

  1. 降低了系统的执行效率

  2. 遇到很复杂的查询时,显得有些吃力

 

常见的ORM框架

  1. EntityFramework Core

  2. NHibnate(年代久远)

  3. SqlSugger(当下比较流行)

  4. Dapper(半ORM)

  5. MyBatis.Net (需要写一大堆的XML)

  6. MyBatisPlus (Java开发最流行)

 

选择EntityFrameworkCore的原因:

  1. 微软的亲儿子, 对接了微软的众多其他需要数据访问的框架,例如ASP.NET Identity,ASP.NET WebApi

  2. 全面支持LINQ查询

  3. EFCore性能提升, 已非常接近原生的ADO.NET框架了

  4. 数据库迁移功能 ,可以动态创建数据库或者修改数据库

 

3. EntityFrameworkCore概述

Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。

EF Core 可用作对象关系映射程序 (O/RM),这可以实现以下两点:

  • 使 .NET 开发人员能够使用 .NET 对象处理数据库。

  • 无需再像平常那样编写大部分数据访问代码。

EF Core 支持多个数据库引擎,请参阅数据库提供程序了解详细信息。

1. 模型开发方式

对于 EF Core,使用模型执行数据访问。 模型由实体类和表示数据库会话的上下文对象构成。 上下文对象允许查询并保存数据。 有关详细信息,请参阅创建模型

EF 支持以下模型开发方法:

  • 从现有数据库生成模型(DbFirst)。

  • 对模型手动编码,使其符合数据库(DbFirst)。

  • 创建模型后,使用 EF 迁移从模型创建数据库。 模型发生变化时,迁移可让数据库不断演进(CodeFirst)。

 

2. EF O/RM 注意事项

虽然 EF Core 善长提取许多编程详细信息,但还是有一些适用于任何 O/RM 的最佳做法,可帮助避免生产应用中的常见陷阱:

  • 若要在高性能生产应用中构建、调试、分析和迁移数据,必须具备基础数据库服务器的中级知识或更高级别的知识。 例如,有关主键和外键、约束、索引、标准化、DML 和 DDL 语句、数据类型、分析等方面的知识。

  • 功能和集成测试:请务必尽可能严密地复制生产环境,以便:

    • 查找仅在使用特定版本的数据库服务器时应用才出现的问题。

    • 在升级 EF Core 和其他依赖项时捕获中断性变更。 例如,添加或升级 ASP.NET Core、OData 或 AutoMapper 等框架。 这些依赖项可能以多种意外方式影响 EF Core。

  • 通过代表性负载进行性能和压力测试。 某些功能的不成熟用法缩放性不佳。 例如,多项集合包含内容、大量使用延迟加载、对未编制索引的列执行条件查询、对存储生成的值进行大规模更新和插入、缺乏并发处理、大型模型、缓存策略不充分。

  • 安全评审:例如,连接字符串和其他机密处理、非部署操作的数据库权限、原始 SQL 的输入验证、敏感数据加密。

  • 确保日志记录和诊断充足且可用。 例如,适当的日志记录配置、查询标记和 Application Insights。

  • 错误恢复。 为常见故障场景(如版本回退、回退服务器、横向扩展和负载平衡、DoS 缓解和数据备份)准备应急计划。

  • 生成的迁移的详细检查和测试。 将迁移应用于生产数据前,应对其进行全面测试。 若表中包含生产数据,架构的形状和列类型就不能轻易更改。 例如,在 SQL Server 上,对于映射到字符串和十进制属性的列,nvarchar(max)decimal(18, 2) 极少成为最佳类型,但这些是 EF 使用的默认值,因为 EF 不了解你的具体情况。

 

4. Nuget 包

1. 包版本

请务必安装 Microsoft 提供的所有 EF Core 包的同一版本。 例如,如果安装了 5.0.3 版本的 Microsoft.EntityFrameworkCore.SqlServer,则所有其他 Microsoft.EntityFrameworkCore.* 包也必须为 5.0.3 版本。

此外,请确保所有外部包都与所使用的 EF Core 的版本兼容。 特别是,检查外部数据库提供程序是否支持你所使用的 EF Core 版本。 EF Core 的新主版本通常需要更新的数据库提供程序。

警告

NuGet 不强制使用一致的包版本。 请始终仔细检查你在 .csproj 文件或等效

 

2. 数据库提供程序

EF Core 通过使用“数据库提供程序”支持不同的数据库系统。 每个系统都有自己的数据库提供程序,而提供程序以 NuGet 包的形式提供。 应用程序应安装其中一个或多个提供程序包。

下表列出了常见的数据库提供程序。 有关可用提供程序的更全面列表,请参阅数据库提供程序

数据库系统 配置示例 NuGet 程序包
SQL Server 或 Azure SQL .UseSqlServer(connectionString) Microsoft.EntityFrameworkCore.SqlServer
Azure Cosmos DB .UseCosmos(connectionString, databaseName) Microsoft.EntityFrameworkCore.Cosmos
SQLite .UseSqlite(connectionString) Microsoft.EntityFrameworkCore.Sqlite
EF Core 内存中数据库 .UseInMemoryDatabase(databaseName) Microsoft.EntityFrameworkCore.InMemory
PostgreSQL* .UseNpgsql(connectionString) Npgsql.EntityFrameworkCore.PostgreSQL
MySQL/MariaDB* .UseMySql(connectionString) Pomelo.EntityFrameworkCore.MySql
Oracle* PLSQL .UseOracle(connectionString) [Oracle.EntityFrameworkCore](

这些是由社区开发和提供的热门高质量开源提供程序。 列出的其他提供程序由 Microsoft 提供。

仔细考虑是否使用内存中提供程序。 它不是为生产用途而设计的,也可能不是用于测试的最佳解决方案

 

3. 工具

 $ dotnet tool --help

install <PACKAGE_ID> 安装全局或本地工具。本地工具将被添加到清单并还原。
uninstall <PACKAGE_ID> 卸载全局工具或本地工具。
update <PACKAGE_ID> 更新全局工具。
list 列出全局或本地安装的工具。
run <COMMAND_NAME> 运行本地工具。
search <搜索词> 在 nuget.org 中搜索 dotnet 工具
restore 还原本地工具清单中定义的工具。

使用用于 EF Core 迁移现有数据库中的反向工程(基架)的工具需要安装相应的工具包:

  • 可在 Visual Studio 包管理器控制台中使用的 PowerShell 工具的 Microsoft.EntityFrameworkCore.Tools

  • 跨平台命令行工具的 dotnet-efMicrosoft.EntityFrameworkCore.Design

请参阅 Entity Framework Core 工具参考,详细了解如何使用 EF Core 工具,包括如何在项目中或在全局范围内正确安装 dotnet-ef 工具。

$ dotnet tool install --help

-g, --global 为当前用户安装工具。
--local 安装工具并将其添加到本地工具清单(默认)。
--tool-path <PATH> 将安装工具的目录。如果目录不要放置测试结果的目录。若不存在,将创建指定目录。存在,将创建该目 录。
--version <VERSION> 要安装的工具包版本。
--configfile <FILE> 要使用的 NuGet 配置文件。
--tool-manifest <PATH> 清单文件的路径。
--add-source <SOURCE> 添加其他要在安装期间使用的 NuGet 包源。
--framework <FRAMEWORK> 要安装工具的目标框架。
--prerelease 正在确定是否包括预发行包。
--disable-parallel 防止并行还原多个项目。
--ignore-failed-sources 将包源失败视为警告。
--no-cache 不要缓存包和 HTTP 请求。
--interactive 允许命令停止和等待用户输入或操作(例如,用以完成身份验证)。
-v, --verbosity <LEVEL> 设置 MSBuild 详细程度。允许值为 q[uiet]、m[inimal]、n[ormal]、d[etailed] 和 diag[nostic]。
-a, --arch <arch> 目标体系结构。
-?, -h, --help 显示命令行帮助。

安装.Net CLI

详细步骤,请看第四单元 :数据迁移部分

$ dotnet tool install -g --version 6.0.4 dotnet-ef
常用选项
选项 Short 说明
--json   显示 JSON 输出。
--context <DBCONTEXT> -c 要使用的 DbContext 类。 仅类名或完全限定命名的空间。 如果省略此选项,EF Core 将查找上下文类。 如果有多个上下文类,则此选项是必需的。
--project <PROJECT> -p 目标项目的项目文件夹的相对路径。 默认值是当前文件夹。
--startup-project <PROJECT> -s 启动项目的项目文件夹的相对路径。 默认值是当前文件夹。
--framework <FRAMEWORK>   目标框架目标框架名字对象。 当项目文件指定了多个目标框架,并且你想要选择其中一个目标框架时,请使用此选项。
--configuration <CONFIGURATION>   生成配置,例如 DebugRelease
--runtime <IDENTIFIER>   要为其还原包的目标运行时的标识符。 有关运行时标识符 (RID) 的列表,请参阅 RID 目录
--no-build   请勿生成项目。 旨在在生成处于最新状态时使用。
--help -h 显示帮助信息。
--verbose -v 显示详细输出。
--no-color   请勿为输出着色。
--prefix-output   具有级别的前缀输出。

 

 

视频配套链接:EFCore 与 WebAPI - 网易云课堂 (163.com)文章来源地址https://www.toymoban.com/news/detail-747551.html

到了这里,关于第一单元 ORM 介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于磁盘需要掌握得知识点

    扇区是数据的存储单元,物理盘是实际的硬盘驱动器,而位图则是记录磁盘阵列中扇区状态的数据结构。它们之间的关系是,物理盘组成了磁盘阵列,位图用于跟踪每个物理盘中的扇区状态。 物理盘是指实际的硬盘驱动器,它们是磁盘阵列中的物理存储设备。在磁盘阵列中,

    2024年02月10日
    浏览(35)
  • .NET 主流 ORM 功能介绍 大全 最新

    ​ 下面是3款.NET 使用最多的ORM,来自公众号投票结果 ,数据比较真实可靠,也可去搜索公众号继续投票  2023年11月投票结果 测试项目 发布时间 微信公众号投票 (追逐时间光者) 使用难度 功能 性能 SqlSugar  orm 2014 26%  491票 适中 全 中高 EFCore   orm 2016 36%  663票 较难 全 中高

    2024年02月05日
    浏览(33)
  • Django后端开发——模型层及ORM介绍

    B站网课:点击蓝色字体跳转 或者复制链接到浏览器打开:https://www.bilibili.com/video/BV1vK4y1o7jH?p=15vd_source=597e21cf34ffcdce468ba00be2177e8a 一般都有python3-dev,没有default-libmysqlclient-dev,需要安装default-libmysqlclient-dev 然后安装mysqlclient 若安装default-libmysqlclient-dev时报错‘pkg-config: not found’

    2024年02月19日
    浏览(40)
  • 硬件工程师需要掌握的PCB设计常用知识点

          一个优秀的硬件工程师设计的产品一定是既满足设计需求又满足生产工艺的,某个方面有瑕疵都不能算是一次完美的产品设计。规范产品的电路设计,工艺设计,PCB设计的相关工艺参数,使得生产出来的实物产品满足可生产性、可测试性、可维修性等的技术规范要求,

    2023年04月20日
    浏览(45)
  • 【考研数学】数学“背诵”手册 | 需要记忆且容易遗忘的知识点

    复习到后期,去做到前面内容的题目时,有一些需要记忆的结论就比较模糊,比如微分方程的特解形式、施密特正交、各种分布的概率密度等等。我便把这些模糊的点都记录下来了,整理在一起,方便随时查阅 基本形式: f ( x ) = ∑ n = 0 ∞ f ( n ) ( x 0 ) n ! ( x − x 0 ) n . f(x)=

    2024年02月08日
    浏览(32)
  • 第一天 关于项目遇到的问题和缺少的知识点

    配置文件使用的都是配置类方式 创建配置类WebMvcConfig,设置静态资源映射 用于在Springboot项目中, 默认静态资源的存放目录为 : \\\"classpath:/resources/\\\", \\\"classpath:/static/\\\", \\\"classpath:/public/\\\" ; 而在我们的项目中静态资源存放在 backend, front 目录中, 那么这个时候要想访问到静态资源, 就需要

    2024年02月09日
    浏览(38)
  • 数据库系统概述——第一章 绪论(知识点复习+练习题)

    ✨ 博主: 命运之光 🦄 专栏: 离散数学考前复习(知识点+题) 🍓 专栏: 概率论期末速成(一套卷) 🐳 专栏: 数字电路考前复习 🦚 专栏: 数据库系统概述 ✨ 博主的其他文章: 点击进入博主的主页​​​​​ 前言: 身为大学生考前复习一定十分痛苦,你有没有过以

    2024年02月09日
    浏览(41)
  • 详细介绍Django的ORM操作中的F()函数

    在Django的ORM(对象关系映射)中,F()函数是一个强大的查询表达式,用于在数据库层级执行字段级别的操作和比较。 F()函数允许你在查询中 引用数据库字段 ,以及在查询过程中执行数据库级别的操作,而无需将数据取回到Python层。这可以提高性能并减少数据传输量。 下面是

    2024年02月13日
    浏览(26)
  • 第一单元 单元测试

    在我们之前,测试某些功能是否能够正常运行时,我们都将代码写到Main方法中,当我们测试第二个功能时,我们只能选择将之前的代码清掉,重新编写。此时,如果你还想重新测试你之前的功能时,这时你就显得有些难为情了,因为代码都被你清掉了。当然你完全可以把代码

    2024年02月07日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包