2010-02-08 90 views
1

我正在使用DataClassesDataContext將來自數據庫的所有表映射到我的asp.net應用程序。數據庫訪問的靜態類?

爲了完成CRUD操作,我使用方法創建了靜態類,並在每個方法內部實例化了DataClassesDataContext。

例如:

public static class UserQ 
{ 
    public static User getUserById(int userId) 
    { 
     DataClassesDataContext db = new DataClassesDataContext(); 
     var requestedUser = (from u in db.Users 
          where u.User_id == userId 
          select u).First(); 
     if (requestedUser != null) 
      return (User)requestedUser; 
     else 
      return null; 
    } 
} 

我AAM不知道,如果在一個Web應用程序執行數據庫操作的這種方式是安全的? 如果不是,請問您能否提出一個更好的模式?

回答

1

我建議考慮看看Repository模式:

1)Example 1
2)Example 2(斯科特谷的從書呆子晚餐第一章 - 其MVC,但Repository模式說明作品W/O MVC)

+0

我同意。它確實會簡化事情,而在LINQ to SQL的情況下,如果您依賴IQueryable,它將大大提高您的性能。看看這裏http://stackoverflow.com/questions/1223194/loading-subrecords-in-the-repository-pattern – 2010-02-08 18:32:03

+0

謝謝。之前沒有聽說過Repository模式。在評論文章後,我可以說:太棒了! – 2010-02-08 19:12:46

2

由於DataClassesDataContext實現IDisposable,你應該有一個用指令包裹它:

using (DataClassesDataContext db = new DataClassesDataContext()) 
{ 
... 
} 
1

我會非常非常小心在Web應用程序中使用STATIC。有時候這些錯誤非常微妙,你會花費大量的時間進行調試。

我覺得bnkdev &俄德命中要害:看倉庫模式&包裝您的情境呼叫在using語句...

HTH。