静态方法是否适用于Linq To SQL DAL?

时间:2010-02-10 17:15:46

标签: asp.net linq-to-sql multithreading data-access-layer static-methods

我正在为我的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应用程序,还是生产环境中存在问题?

感谢。

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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