2

解決方案中有四個項目:DAL,BOL,UI和Model。如何使用EF 4.x管理分層asp.net Web應用程序中的dbcontext

模型包含POCO類,DAL僅包含一個DbContext類,其中引入了模型。所有項目都有對Model項目的引用,UI有對BOL的引用,BOL對DAL有引用。

例如保存數據的當前方法是: 在按下Submit按鈕後,表單數據存儲在模型POCO類中,POCO類轉到BOL保存方法,當BOL被實例化時,dbcontext也會實例化,並且save方法使用該dbcontext來提交更改。

問題:是否像這樣高效地實例化了dbcontext?我應該做其他事情來獲得更多的表現嗎?我試圖獲得最可能的性能,因爲同時可以將很多記錄插入到數據庫中。

+0

如果你想插入一堆記錄作爲一個工作單元,那麼使用一個上下文實例是有意義的。但是,如果您指的是大量併發(在同一時間_),每個調用都會有自己的上下文。你的意思是哪一個? – 2012-03-13 23:22:47

+0

那麼最好把它做成一般。我將爲程序員在底層構建方法和類,以便他們可以從上層調用它們來插入/更新/刪除/加載數據。他們不需要擔心連接,dbcontexts,並且應該只關注業務。 根據你的意見,在BOL構造函數中實例化dbcontext是正確的,但如果程序員需要同時插入一堆記錄,則應該使用BOL的一個實例。 您可以回覆此建議作爲回覆郵件,我會將其標記爲答案。 – Saber 2012-03-14 06:24:18

+0

好的,但我認爲最多的是你自己的思考和闡述,所以如果你回答自己的問題(堆棧溢出很好)並將其標記爲接受(可能在2天后),我會感覺更好。 – 2012-03-14 07:30:58

回答

0

在底層,DbContext和EF仍然使用ADO.NET連接機制來連接數據庫,所以他們仍然使用ADO.NET連接池和類似的東西。這就是說,你不想讓DBContext保持打開的時間超過你的需要,因爲那樣會保持連接池中的連接,並且連接會更頻繁地閒置。在需要的時候在using語句中創建DBContext。

+0

在一個BOL類中,我可能有3種連接數據庫的方法,你是說最好在每種方法中使用using語句? 如果我想通過調用一個方法來插入100條記錄,那麼調用包含「using」語句並每次創建新的dbcontext的方法是否有效? – Saber 2012-03-13 13:43:10

相關問題