6

我正在为我的 DAL 使用 Linq to SQL,并且听说过关于在 Web 应用程序中使用静态方法的各种事情(关于线程/并发问题)。目前,我创建了一个测试 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 


    }

这种方法对于 Web 应用程序是否合适,还是在生产环境中会出现问题?

谢谢。

4

3 回答 3

5

只要您的静态方法不使用任何共享状态(类级状态或其他全局状态),它们本身就不会导致在多线程环境中运行的任何问题。每个静态方法调用都会创建自己的局部变量的副本。

于 2010-02-10T17:21:29.750 回答
3

就我个人而言,我会避免使用静态方法,因为它会使这段代码更难测试。在测试使用 DAL 的代码时,您将无法轻松地模拟 DAL。请注意,这不是 LINQ 或数据访问层所独有的,它只是代码作为类方法而不是实例方法的函数。

于 2010-02-10T17:20:22.623 回答
2

从您提供的代码段来看,各种方法的作用不是很清楚。在我看来,只要你使用局部变量,它是安全的。

于 2010-02-10T17:21:43.973 回答