статические классы для доступа к базе данных? - PullRequest
1 голос
/ 08 февраля 2010

Я использую 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;
    }
}

Я не уверен, безопасен ли этот способ выполнения операций с базой данных в веб-приложении? Если нет, можете ли вы предложить, пожалуйста, лучшую модель?

Ответы [ 3 ]

2 голосов
/ 08 февраля 2010

Поскольку DataClassesDataContext реализует IDisposable, вы должны заключить его в директиву using:

using (DataClassesDataContext db = new DataClassesDataContext())
{
...
}
1 голос
/ 09 февраля 2010

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

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

НТН.

1 голос
/ 08 февраля 2010

Я бы посоветовал взглянуть на шаблон репозитория:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...