2012-12-04 120 views
0

我是新來的MVC概念和分離控制器邏輯的數據。我正在使用Linq to Sql - 現在我創建了一個新的DbContext實例,然後使用它從控制器查詢數據庫。我必須在代碼中的不同位置做很多相同的查詢 - 所以我的問題是 - 我能否在我的Model文件夾中創建一個獨立的類,在那裏創建一個新的dbcontext實例,並創建查詢的函數db在類中,使這些函數公開,然後從我想要的任何控制器調用它們?我想它是一個2部分的問題,我能做到這一點,這是連接到數據庫的首選方式,或者我只是寫在不同的控制器的所有單獨的代碼?從單獨的類查詢數據庫asp.net MVC

回答

1

如果您必須多次執行相似/相同的查詢,我建議您compile your LINQ queries(該鏈接適用於LINQ to Entities,但對於LINQ to SQL基本上是一樣的)。它反覆調用查詢有更好的性能。你可以做類似下面的代碼片段的東西:

static readonly Func<DbContext, IQueryable<T>> compiledQuery = CompiledQuery.Compile<DbContext, IQueryable<T>>(/*your query goes here*/); 
using (DbContext context = new DbContext()) 
{ 
    IQueryable<T> results = compiledQuery.Invoke(context); 
} 

基本上你可以把這些編譯查詢您的DbContext類,然後使用using語句調用它。

+0

這會去哪裏?在模型文件夾中的單獨類中? –

+0

@ScottSelby你可以把它放到你的DbContext類中,刪除'using'語句並用'this'關鍵字替換'context'' – rexcfnghk

+0

真的嗎?我喜歡使用,因爲它強制處理連接 –

0

這正是你想要做的......你想創建一個倉庫(也許在一個單獨的項目中),這樣分離和重用所有控制器中的所有數據訪問代碼......搜索「倉庫模式「...