-
c# 基础以及c#高级基础
-
Ado.net 基础
-
SqlServer 以及MySQL (都需要高级部分)
-
Asp.net Mvc Core 基础
(1) SQL 拼不对,错还不会找
(2) 开发效率低
(3) 如果发现字段需要重命名,得挨个地方去修改
(4) 老板说要把SQLServer换成MySQL数据库,并且需要快速上线,此时你想的不是快速上线,而是快速离职
ORM 框架基本解决了上述的所有问题。
2. 什么是ORM
ORM(Object-relational mapping),中文翻译为对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
ORM框架的优/缺点
优点:
-
提高开发效率
-
更符合面向对象思想
-
可以快速重命名
-
可以无缝切换数据库
缺点:
-
降低了系统的执行效率
-
遇到很复杂的查询时,显得有些吃力
常见的ORM框架
-
EntityFramework Core
-
NHibnate(年代久远)
-
SqlSugger(当下比较流行)
-
Dapper(半ORM)
-
MyBatis.Net (需要写一大堆的XML)
-
MyBatisPlus (Java开发最流行)
选择EntityFrameworkCore的原因:
-
微软的亲儿子, 对接了微软的众多其他需要数据访问的框架,例如ASP.NET Identity,ASP.NET WebApi
-
全面支持LINQ查询
-
EFCore性能提升, 已非常接近原生的ADO.NET框架了
-
数据库迁移功能 ,可以动态创建数据库或者修改数据库
3. EntityFrameworkCore概述
Entity Framework (EF) Core 是轻量化、可扩展、
EF Core 可用作对象关系映射程序 (O/RM),这可以实现以下两点:
-
使 .NET 开发人员能够使用 .NET 对象处理数据库。
-
无需再像平常那样编写大部分数据访问代码。
EF Core 支持多个数据库引擎,请参阅
1. 模型开发方式
对于 EF Core,使用模型执行数据访问。 模型由实体类和表示数据库会话的上下文对象构成。 上下文对象允许查询并保存数据。 有关详细信息,请参阅
EF 支持以下模型开发方法:
-
从现有数据库生成模型(DbFirst)。
-
对模型手动编码,使其符合数据库(DbFirst)。
-
创建模型后,使用
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 程序包 |
---|---|---|
选项 | Short | 说明 |
---|---|---|