2010-11-07 28 views
0

我有我的數據庫,有我的ADO.NET實體數據模型有我的在一個應用程序庫項目瞭解存儲庫對象,是否都啓動到數據庫的新連接?

然後,在網站上爲每個控制器我開始

MyRepository db = new MyRepository(); 

我期待這個網站將被訪問50.000一天,我想知道...... new MyRepository()部分開始新的連接到數據庫

更安全嗎?

public class MyController : Controller 
{ 
    public MyRepository db { get; set; } 

    protected override void Initialize(RequestContext requestContext) 
    { 
     if (db == null) { db = new MyRepository(); } 

     base.Initialize(requestContext); 
    } 
    ... 

我如何可以瞭解更多一點關於如何將實體模型掛接到數據庫中,以防止多個「壞」事情發生

我有幾個對象,我會想緩存它,因爲他們是相當複雜的,從來沒有改變(除非有人在管理方面改變的話),什麼是我最好的選擇

謝謝。

回答

1

ADO.NET使用connection pool,它避免了每次創建到數據庫的連接。每個應用程序域和每個連接字符串都會創建一個連接池,並重用該池中的連接。所以當你實例化你的倉庫時,沒有連接被創建到數據庫。要緩存對象,您可以查看standard techniques

就您的示例而言,如果MyRepository是一次性的,建議您調用其上的Dispose方法,該方法可以在控制器的Dispose方法中完成。

+0

我應該繼承'MyRepository'上的IDisposable接口,還是可以簡單地將它用作普通對象('public class MyRepository {}')? – balexandre 2010-11-07 09:50:34