Подходят ли статические методы для DAL Linq To SQL? - PullRequest
6 голосов
/ 10 февраля 2010

Я использую Linq to SQL для своего DAL и слышал разные вещи об использовании статических методов в веб-приложении (относительно проблем с многопоточностью / параллелизмом). На данный момент я создал тестовый DAL, который, кажется, работает нормально. Однако есть ли проблемы с тем, как я его создал, так как он статический?

    public static class TestDAL
    {


        public static bool GetUserAddress(string username)
        {
            testDBDataContext dbContext = new testDBDataContext();
            //Linq code goes here

        }


        public static void InsertUserNumber(int userID)
        {
            testDBDataContext dbContext = new testDBDataContext();
            //...
            dbContext.UserDetails.InsertOnSubmit(nUser);
            dbContext.SubmitChanges();

        }

       //etc... All the methods are created in the same way 


    }

Подходит ли этот метод для веб-приложения или будут проблемы в производственной среде?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 10 февраля 2010

Пока ваши статические методы не используют какое-либо общее состояние (состояние уровня класса или другое глобальное состояние), они сами не вызовут проблем при работе в многопоточной среде.Каждый статический вызов метода создает копии своих собственных локальных переменных.

3 голосов
/ 10 февраля 2010

Лично я бы избегал статических методов, так как это усложнит тестирование этого кода. Вы не сможете легко смоделировать DAL при тестировании кода, который его использует. Обратите внимание, что это не уникально для LINQ или слоев доступа к данным, это просто функция кода, являющегося методом класса, а не методом экземпляра.

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

Из предоставленного вами фрагмента не очень понятно, что делают различные методы. На мой взгляд, пока вы используете локальные переменные, это безопасно.

...