日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

efcore 实体配置_快速掌握EF Core使用技能

發(fā)布時間:2025/3/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 efcore 实体配置_快速掌握EF Core使用技能 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

EF Core 基礎(chǔ)概念

概念

EF Core 全稱是Entity Framework Core,可使用 EF Core 開發(fā)面向 .NET Core 的應(yīng)用,EF Core 同時支持在 Visual StudioVisual Studio for Mac 或 Visual Studio Code 等環(huán)境下開發(fā)。雖然EF CORO 同樣支持在Xamarin和.Net Native 上實現(xiàn)運(yùn)行,但是存在運(yùn)行限制,可能會影響EF Core處理的效率,暫不推薦使用。

技術(shù)大綱

Entity Framework (EF) Core 是輕量化、可擴(kuò)展、開源和跨平臺版的常用 Entity Framework 數(shù)據(jù)訪問技術(shù)。

EF Core 可用作對象關(guān)系映射程序 (O/RM),這可以實現(xiàn)以下兩點:

  • 使 .NET 開發(fā)人員能夠使用 .NET 對象處理數(shù)據(jù)庫。

  • 無需再像通常那樣編寫大部分?jǐn)?shù)據(jù)訪問代碼。

EF Core 支持多個數(shù)據(jù)庫引擎。

獲取 Entity Framework Core 運(yùn)行時

舉例:安裝或更新 EF Core SQL Server 的途徑

三種途徑

  • NET Core CLI (控制臺命令行操作頁面可執(zhí)行)

    • 執(zhí)行“dotnet add package Microsoft.EntityFrameworkCore.SqlServer”該指令

    • 可以使用 -v 修飾符在 dotnet add package 命令中指明特定的版本。例如,若要安裝 EF Core 2.2.0 包,請將 -v 2.2.0 追加到命令中。

  • Visual Studio NuGet 包管理器對話框

    • 從 Visual Studio 菜單中選擇“項目”>“管理 NuGet 包”

    • 單擊“瀏覽”或“更新”選項卡

    • 若要安裝或更新 SQL Server 提供程序,請選擇 Microsoft.EntityFrameworkCore.SqlServer 包并確認(rèn)。

  • Visual Studio NuGet 包管理器控制臺

    • 從 Visual Studio 菜單中選擇“工具”>“NuGet 包管理器”>“包管理器控制臺”

    • Install-Package Microsoft.EntityFrameworkCore.SqlServer

    • 若要更新提供程序,使用 Update-Package 命令。

    • 若要指定特定版本,可以使用 -Version 修飾符。例如,若要安裝 EF Core 2.2.0 包,請將 -Version 2.2.0 追加到命令中。

EF CORE 實操內(nèi)容

模型

對于 EF Core,使用模型執(zhí)行數(shù)據(jù)訪問。模型由實體類和表示數(shù)據(jù)庫會話的上下文對象DBContext構(gòu)成。上下文對象允許查詢并保存數(shù)據(jù)。

EF 支持以下模型開發(fā)方法:

  • 從現(xiàn)有數(shù)據(jù)庫生成模型。

  • 對模型手動編碼,使其符合數(shù)據(jù)庫。

  • 創(chuàng)建模型后,使用 EF 遷移從模型創(chuàng)建數(shù)據(jù)庫。模型發(fā)生變化時,遷移可讓數(shù)據(jù)庫不斷演進(jìn)。

EF 中的重要元素DBContext

DbContext是實體類和數(shù)據(jù)庫之間的橋梁,DbContext主要負(fù)責(zé)與數(shù)據(jù)交互,主要作用:

  • DBContext 包含所有實體映射到數(shù)據(jù)庫的實體集【DbSet】

  • DBContext 將LINQ TO Entities 查詢轉(zhuǎn)換成DBServer認(rèn)識的SQL語句

  • DBContext跟蹤實體從數(shù)據(jù)庫中查詢出來后發(fā)生的修改變化

  • DBContext支持持久化數(shù)據(jù)庫

如下圖所示?

DBContext 詳細(xì)介紹

DBContext 實現(xiàn)上述功能,自然類體積較大,截取部分方法展示如下:

如下展示一段代碼以便更好理解:

using Microsoft.EntityFrameworkCore;using System.Collections.Generic;namespace Intro
{public class BloggingContext : DbContext
{public DbSet Blogs { get; set; }public DbSet Posts { get; set; }protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){
optionsBuilder.UseSqlServer(
@"Server=(localdb)\mssqllocaldb;Database=Blogging;Integrated Security=True");
}
}public class Blog
{public int BlogId { get; set; }public string Url { get; set; }public int Rating { get; set; }public List Posts { get; set; }
}public class Post
{public int PostId { get; set; }public string Title { get; set; }public string Content { get; set; }public int BlogId { get; set; }public Blog Blog { get; set; }
}
}

查詢

使用語言集成查詢 (LINQ) 從數(shù)據(jù)庫檢索實體類的實例。其中,where 和 Orderby 兩個方法并不執(zhí)行數(shù)據(jù)庫操作?這里重點說明一下,只有ToList 這個操作,才會真正去數(shù)據(jù)庫執(zhí)行查詢。

using (var db = new BloggingContext())
{
var blogs = db.Blogs
.Where(b => b.Rating > 3)
.OrderBy(b => b.Url)
.ToList();
}

保存數(shù)據(jù)

使用實體類的實例在數(shù)據(jù)庫中創(chuàng)建、刪除和修改數(shù)據(jù)。

using (var db = new BloggingContext())
{
var blog = new Blog { Url = "http://sample.com" };
db.Blogs.Add(blog);
db.SaveChanges();
}

EF O/RM 注意事項

雖然 EF Core 善長提取許多編程詳細(xì)信息,但還是有一些適用于任何 O/RM 的最佳做法,可幫助避免生產(chǎn)應(yīng)用中的常見陷阱:

  • 若要在高性能生產(chǎn)應(yīng)用中構(gòu)建、調(diào)試、分析和遷移數(shù)據(jù),必須具備基礎(chǔ)數(shù)據(jù)庫服務(wù)器的中級知識或更高級別的知識。例如,有關(guān)主鍵和外鍵、約束、索引、標(biāo)準(zhǔn)化、DML 和 DDL 語句、數(shù)據(jù)類型、分析等方面的知識。

  • 功能和集成測試:請務(wù)必盡可能嚴(yán)密地復(fù)制生產(chǎn)環(huán)境,以便:

    • 查找僅在使用特定版本的數(shù)據(jù)庫服務(wù)器時才出現(xiàn)的問題。

    • 在升級 EF Core 和其他依賴項時捕獲中斷性變更。例如,添加或升級 ASP.NET Core、OData 或 Automapper 等框架。這些依賴項可能以多種意外方式影響 EF Core。

  • 通過代表性負(fù)載進(jìn)行性能和壓力測試。某些功能的不成熟用法縮放性不佳。例如,多項集合包含內(nèi)容、大量使用延遲加載、對未編制索引的列執(zhí)行條件查詢、對存儲生成的值進(jìn)行大規(guī)模更新和插入、缺乏并發(fā)處理、大型模型、緩存策略不充分。

  • 安全評審:例如,連接字符串和其他機(jī)密處理、非部署操作的數(shù)據(jù)庫權(quán)限、原始 SQL 的輸入驗證、敏感數(shù)據(jù)加密。

  • 確保日志記錄和診斷充足且可用。例如,適當(dāng)?shù)娜罩居涗浥渲谩⒉樵儤?biāo)記和 Application Insights。

  • 錯誤恢復(fù)。為常見故障場景(如版本回退、回退服務(wù)器、橫向擴(kuò)展和負(fù)載平衡、DoS 緩解和數(shù)據(jù)備份)準(zhǔn)備應(yīng)急計劃。

  • 應(yīng)用程序部署和遷移。規(guī)劃如何在部署過程中應(yīng)用遷移;在應(yīng)用程序啟動時執(zhí)行此操作可能會導(dǎo)致并發(fā)問題,并且對于常規(guī)操作,這所需的權(quán)限比必要權(quán)限更高。在遷移期間,使用暫存來輔助從錯誤中恢復(fù)。有關(guān)詳細(xì)信息,請參閱應(yīng)用遷移。

  • 生成的遷移的詳細(xì)檢查和測試。將遷移應(yīng)用于生產(chǎn)數(shù)據(jù)前,應(yīng)對其進(jìn)行全面測試。若表中包含生產(chǎn)數(shù)據(jù),架構(gòu)的形狀和列類型就不能輕易更改。例如,在 SQL Server 上,對于映射到字符串和十進(jìn)制屬性的列,nvarchar(max) 和 decimal(18, 2) 極少成為最佳類型,但這些是 EF 使用的默認(rèn)值,因為 EF 不了解你的具體情況。

總結(jié)

以上是生活随笔為你收集整理的efcore 实体配置_快速掌握EF Core使用技能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。