-
c# 基礎以及c#高級基礎
-
Ado.net 基礎
-
SqlServer 以及MySQL (都需要高級部分)
-
Asp.net Mvc Core 基礎
?文章來源:http://www.zghlxwxcb.cn/news/detail-747551.html
1. 新手的煩惱
(1) SQL 拼不對,錯還不會找
(2) 開發(fā)效率低
(3) 如果發(fā)現字段需要重命名,得挨個地方去修改
(4) 老板說要把SQLServer換成MySQL數據庫,并且需要快速上線,此時你想的不是快速上線,而是快速離職
?
ORM 框架基本解決了上述的所有問題。
?
2. 什么是ORM
ORM(Object-relational mapping),中文翻譯為對象關系映射,是一種為了解決面向對象與關系數據庫存在的互不匹配的現象的技術。簡單的說,ORM是通過使用描述對象和數據庫之間映射的元數據,將程序中的對象自動持久化到關系數據庫中。
?
ORM框架的優(yōu)/缺點
優(yōu)點:
-
提高開發(fā)效率
-
更符合面向對象思想
-
可以快速重命名
-
可以無縫切換數據庫
缺點:
-
降低了系統(tǒng)的執(zhí)行效率
-
遇到很復雜的查詢時,顯得有些吃力
?
常見的ORM框架
-
EntityFramework Core
-
NHibnate(年代久遠)
-
SqlSugger(當下比較流行)
-
Dapper(半ORM)
-
MyBatis.Net (需要寫一大堆的XML)
-
MyBatisPlus (Java開發(fā)最流行)
?
選擇EntityFrameworkCore的原因:
-
微軟的親兒子, 對接了微軟的眾多其他需要數據訪問的框架,例如ASP.NET Identity,ASP.NET WebApi
-
全面支持LINQ查詢
-
EFCore性能提升, 已非常接近原生的ADO.NET框架了
-
數據庫遷移功能 ,可以動態(tài)創(chuàng)建數據庫或者修改數據庫
?
3. EntityFrameworkCore概述
Entity Framework (EF) Core 是輕量化、可擴展、
EF Core 可用作對象關系映射程序 (O/RM),這可以實現以下兩點:
-
使 .NET 開發(fā)人員能夠使用 .NET 對象處理數據庫。
-
無需再像平常那樣編寫大部分數據訪問代碼。
EF Core 支持多個數據庫引擎,請參閱
1. 模型開發(fā)方式
對于 EF Core,使用模型執(zhí)行數據訪問。 模型由實體類和表示數據庫會話的上下文對象構成。 上下文對象允許查詢并保存數據。 有關詳細信息,請參閱
EF 支持以下模型開發(fā)方法:
-
從現有數據庫生成模型(DbFirst)。
-
對模型手動編碼,使其符合數據庫(DbFirst)。
-
創(chuàng)建模型后,使用
?
2. EF O/RM 注意事項
雖然 EF Core 善長提取許多編程詳細信息,但還是有一些適用于任何 O/RM 的最佳做法,可幫助避免生產應用中的常見陷阱:
-
若要在高性能生產應用中構建、調試、分析和遷移數據,必須具備基礎數據庫服務器的中級知識或更高級別的知識。 例如,有關主鍵和外鍵、約束、索引、標準化、DML 和 DDL 語句、數據類型、分析等方面的知識。
-
功能和集成測試:請務必盡可能嚴密地復制生產環(huán)境,以便:
-
查找僅在使用特定版本的數據庫服務器時應用才出現的問題。
-
在升級 EF Core 和其他依賴項時捕獲中斷性變更。 例如,添加或升級 ASP.NET Core、OData 或 AutoMapper 等框架。 這些依賴項可能以多種意外方式影響 EF Core。
-
-
通過代表性負載進行性能和壓力測試。 某些功能的不成熟用法縮放性不佳。 例如,多項集合包含內容、大量使用延遲加載、對未編制索引的列執(zhí)行條件查詢、對存儲生成的值進行大規(guī)模更新和插入、缺乏并發(fā)處理、大型模型、緩存策略不充分。
-
安全評審:例如,連接字符串和其他機密處理、非部署操作的數據庫權限、原始 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 通過使用“數據庫提供程序”支持不同的數據庫系統(tǒng)。 每個系統(tǒng)都有自己的數據庫提供程序,而提供程序以 NuGet 包的形式提供。 應用程序應安裝其中一個或多個提供程序包。
下表列出了常見的數據庫提供程序。 有關可用提供程序的更全面列表,請參閱
數據庫系統(tǒng) | 配置示例 | NuGet 程序包 |
---|---|---|
SQL Server 或 Azure SQL | .UseSqlServer(connectionString) |
|
Azure Cosmos DB | .UseCosmos(connectionString, databaseName) |
|
SQLite | .UseSqlite(connectionString) |
|
EF Core 內存中數據庫 | .UseInMemoryDatabase(databaseName) |
|
PostgreSQL* | .UseNpgsql(connectionString) |
|
MySQL/MariaDB* | .UseMySql(connectionString) |
|
Oracle* PLSQL | .UseOracle(connectionString) |
[Oracle.EntityFrameworkCore]( |
這些是由社區(qū)開發(fā)和提供的熱門高質量開源提供程序。 列出的其他提供程序由 Microsoft 提供。
仔細考慮是否使用內存中提供程序。 它不是為生產用途而設計的,也可能不是
?
3. 工具
$ dotnet tool --help
install <PACKAGE_ID> 安裝全局或本地工具。本地工具將被添加到清單并還原。
uninstall <PACKAGE_ID> 卸載全局工具或本地工具。
update <PACKAGE_ID> 更新全局工具。
list 列出全局或本地安裝的工具。
run <COMMAND_NAME> 運行本地工具。
search <搜索詞> 在 nuget.org 中搜索 dotnet 工具
restore 還原本地工具清單中定義的工具。
使用用于
-
可在 Visual Studio
-
跨平臺命令行工具的
請參閱
$ dotnet tool install --help
-g, --global 為當前用戶安裝工具。
--local 安裝工具并將其添加到本地工具清單(默認)。
--tool-path <PATH> 將安裝工具的目錄。如果目錄不要放置測試結果的目錄。若不存在,將創(chuàng)建指定目錄。存在,將創(chuàng)建該目 錄。
--version <VERSION> 要安裝的工具包版本。
--configfile <FILE> 要使用的 NuGet 配置文件。
--tool-manifest <PATH> 清單文件的路徑。
--add-source <SOURCE> 添加其他要在安裝期間使用的 NuGet 包源。
--framework <FRAMEWORK> 要安裝工具的目標框架。
--prerelease 正在確定是否包括預發(fā)行包。
--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> |
? | 生成配置,例如 Debug 或 Release 。 |
--runtime <IDENTIFIER> |
? | 要為其還原包的目標運行時的標識符。 有關運行時標識符 (RID) 的列表,請參閱 |
--no-build |
? | 請勿生成項目。 旨在在生成處于最新狀態(tài)時使用。 |
--help |
-h |
顯示幫助信息。 |
--verbose |
-v |
顯示詳細輸出。 |
--no-color |
? | 請勿為輸出著色。 |
--prefix-output |
? | 具有級別的前綴輸出。 |
?
?
視頻配套鏈接:EFCore 與 WebAPI - 網易云課堂 (163.com)文章來源地址http://www.zghlxwxcb.cn/news/detail-747551.html
到了這里,關于第一單元 ORM 介紹的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!