![](/img/trans.png)
[英]What is the best practice to route related entities in ASP.NET WebApi
[英]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.