簡體   English   中英

ASP.NET WebAPI 2 +實體框架連接緩存的最佳實踐

[英]ASP.NET WebAPI 2 + Entity Framework Best Practice for connection caching

我正試圖找出使用WebAPI和Entity Framework在我的平台上執行操作的最佳方法。

現在我正在為每個請求創建一個新連接:在每個控制器中都有一個對象被實例化並為每個方法處理。

public class SchedulerController : ApiController
{
    private ApplicationDbContext db = new ApplicationDbContext();

    protected override void Dispose(bool disposing)
    {
        if (disposing)
            db.Dispose();
        base.Dispose(disposing);
    }
}

在我看來,為每個請求創建連接是一個影響性能的完整開銷。 我知道在Java上有一些工具(可能是Nutcracker?)處理一種連接池以重用相同的連接,這樣可以提高性能。

在c#/ ASP.NET / Azure平台上有類似的東西嗎?

我非常感謝請求增長數字的性能比較。

編輯:這主要是指DbContext自身的緩存。

我認為您誤解了實體框架的工作原理。

EF使用ADO.NET,因此連接池實際上由提供者管理。 您可以通過連接字符串更改池的行為。 我相信它默認重用連接。

EF也在內部使用一些模式,如工作單元,因此它意味着封裝一組操作(因此名稱中的“上下文”一詞)。 這就是為什么你有一個SaveChanges()方法“提交”數據庫的一切。

因此,實際上建議您為每個請求創建一個新實例,以保證“工作單元”的完整性,即使這樣,您也應該確保以轉換為原子事務的方式保存更改在db方面的事情。

但是,您可以做的只是在需要時創建實例,而不是讓控制器在每次請求時創建實例。 再說一次,如果你使用的是Web API,你幾乎總是需要訪問數據,所以......

暫無
暫無

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

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