2010-02-08 3 views
1

Я использую DataClassesDataContext, чтобы сопоставить все таблицы из db в моем приложении 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 не уверен, если это способ ведения операций с базами данных в веб-приложение является безопасным? Если нет, можете ли вы предложить лучший образец?

ответ

1

Я хотел бы предложить взглянуть на Repository Pattern:

1) Example 1
2) Example 2 (первая глава Скотта Гу из Nerd ужин - его для MVC, но Repository шаблон проиллюстрирована работы без MVC)

+0

Согласен. Это действительно упростит ситуацию, и в случае LINQ to SQL это значительно увеличит вашу производительность, если вы будете полагаться на IQueryable. Взгляните сюда http://stackoverflow.com/questions/1223194/loading-subrecords-in-the-repository-pattern –

+0

Спасибо. Раньше не слышал о шаблоне хранилища. После излучений статей я могу сказать: Отлично! –

2

Как DataClassesDataContext реализует IDisposable, вы должны быть окружив его с помощью директивы:

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

Я был бы очень и очень осторожным используя STATIC в веб-приложениях. Иногда ошибки настолько тонкие, что вы будете тратить много времени на отладку.

Я думаю bnkdev & Одед ударил ноготь на голове: смотреть на шаблоне репозитория & оберните контекст вызов в использовании заявления ...

HTH.

Смежные вопросы