簡體   English   中英

Entity Framework Core 3:DBContext 上的接口好的做法?

[英]Entity Framework Core 3: Interface on DBContext good practice?

在 Entity Framework Core 3.1 中在 DBContext 上創建接口是一種好的做法嗎? 微軟有這方面的任何文檔嗎?

我們知道單元測試中的 Mocking DBContext 是不好的做法,但是如何在它上面創建一個接口呢?

https://docs.microsoft.com/en-us/ef/core/testing/

“但是,我們從不嘗試模擬 DbContext 或 IQueryable。這樣做很困難、麻煩且脆弱。不要這樣做。”

資源: 為什么 DbContext 不實現 IDbContext 接口?

如果您的目標是促進與 DbContext 交互的單元測試代碼,那么我建議您考慮在工作單元旁邊實現存儲庫模式來管理 DbContext 生命周期 scope 和提交。 我已經在各種答案中概述了實現靈活且易於測試的存儲庫類的有效方法,但這個可能總結得最好:( 如何在存儲庫模式上從 Entity Framework Core 設置多個服務?

我建議避免使用通用存儲庫實現並采用 EF 的IQueryable支持的強大功能來構建一個極其簡單的模擬層,以提供高效和靈活的查詢。

最后一個細節是,如果您確實希望通過存儲庫支持async查詢並希望對它們進行單元測試,可以在此處找到支持此功能的寶貴提示:( 使用內存中的 Unit-testing.ToListAsync()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM