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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何使用 Entity Framework 的 DbContext

發布時間:2023/12/4 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何使用 Entity Framework 的 DbContext 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

微軟的 Entity Framework 是一個開源的 對象-關系映射 ORM 框架,它幫助我們打通了 數據庫的數據模型 到 代碼層的領域模型,Entity Framework 簡化了應用程序對數據庫的 CURD 操作,而且還向高層屏蔽了數據是如何持久化到數據庫的。

說的具體一點就是 DbContext 充當了數據庫到領域模型之間的橋梁,這篇文章我們將會討論如何配置 DbContext 并使用 Entity Framework Core provider 對數據庫進行 CURD 操作。

DbContext

DbContext 是 EF 中非常重要的一個組件,它扮演著 Database 的會話連接,使用它可以查詢數據到你的 entitys 集合中,也可以通過它將 entitys 保存到底層數據庫中, EntityFramework Core 中的 DbContext 擁有如下幾個功能模塊。

  • 連接管理

  • 查詢數據

  • 持久化數據

  • 修改跟蹤

  • 緩存

  • 事務管理

要想使用 EntityFramework,需要通過 nuget 引用 Microsoft.EntityFrameworkCore 包,可以通過 Visual Studio 2019 的 NuGet package manager 可視化界面安裝 或者 通過 NuGet package manager 命令行工具輸入以下命令:

dotnet?add?package?Microsoft.EntityFrameworkCore

接下來討論下如何在 ?ASP.Net Core 中使用 DbContext 。

創建 DbContext

首先創建一個 CustomContext 類,并繼承 Entity Framework 中的基類 DbContext,如下代碼所示:

public?class?CustomContext?:?DbContext{public?CustomContext(DbContextOptions?options)?:?base(options){}protected?override?void?OnConfiguring(DbContextOptionsBuilder?optionsBuilder){//Write?your?code?here?to?configure?the?context}protected?override?void?OnModelCreating(ModelBuilder?modelBuilder){//Write?your?code?here?to?configure?the?model}}

可以看到 CustomContext 的構造函數中接受了 DbContextOptions 類型的參數,該類主要用于對 DbContext 做一些必要的參數配置,當然你也可以在 OnConfiguring() 中對 DbContext 進行配置,接下來的 OnModelCreating() 方法用于對 model 進行配置。

下面我在 CustomContext 中新增幾個 DbSet<TEntity> 屬性用來表示實體集合,如下代碼所示:

public?class?CustomContext?:?DbContext{public?CustomContext(DbContextOptions?options)?:?base(options){}protected?override?void?OnConfiguring(DbContextOptionsBuilder?optionsBuilder){}protected?override?void?OnModelCreating(ModelBuilder?modelBuilder){}public?DbSet<Author>?Authors?{?get;?set;?}public?DbSet<Blog>?Blogs?{?get;?set;?}}public?class?Author{public?int?AuthorID?{?get;?set;?}public?string?AuthorName?{?get;?set;?}}public?class?Blog{public?int?BlogID?{?get;?set;?}public?string?BlogName?{?get;?set;?}public?int?AuthorID?{?get;?set;?}}

注冊 DbContext 注入到 ASP.NET Core 運行時

要想在 ASP.NET Core 中使用,需要將 CustomerContext 注入到 ServiceCollection 容器中,這里采用 SqlServer 作為底層存儲,所以還需要在 NuGet 上引用 Microsoft.EntityFrameworkCore.SqlServer 包,接下來在 Startup.ConfigureServices() 中新增如下代碼:

public?class?Startup{//?This?method?gets?called?by?the?runtime.?Use?this?method?to?add?services?to?the?container.public?void?ConfigureServices(IServiceCollection?services){services.AddControllersWithViews();services.AddDbContext<CustomContext>(options?=>?options.UseSqlServer("Data?Source=.;?Initial?Catalog=MyTest;?Trusted_Connection=Yes"));}}

DbContext 依賴注入

現在 CustomContext 已經注入到容器了,接下來就可以在 HomeController 中通過依賴注入的方式獲取 CustomerContext 實例,下面的代碼片段展示了如何去實現。

public?class?HomeController?:?Controller{ILogger<HomeController>?logger;private?CustomContext?dbContext;public?HomeController(ILogger<HomeController>?logger,?CustomContext?dbContext){this.logger?=?logger;this.dbContext?=?dbContext;dbContext.Database.EnsureCreated();}}

上面的代碼,我用了 dbContext.Database.EnsureCreated(); 來確保數據庫已經成功創建,執行完這句代碼之后,數據庫將會生成 MyTest 數據庫 和 ?Author,Blog 兩張表結構,如下圖所示:

接下來在 Index 方法中插入一條記錄并查詢,效果如下:

這就是配置 EF 所要做的所有事情,現在你可以利用 CustomContext 去所 CURD 操作了,DbContext 在概念上類似 ObjectContext,表示一個 UnitOfWork ?組合單元,并且 EF 是DDD領域的一個實現案例,DbContext 的職責就是負責 應用程序 和 數據庫 之間的交互,關于 Entity Framework Core 的更多特性,我會放到后面的文章中和大家一起分享。

譯文鏈接:https://www.infoworld.com/article/3311737/how-to-use-the-dbcontext-in-entity-framework-core.html

總結

以上是生活随笔為你收集整理的如何使用 Entity Framework 的 DbContext的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。