我正在为我的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应用程序,还是生产环境中存在问题?
感谢。
答案 0 :(得分:5)
只要您的静态方法不使用任何共享状态(类级别状态或其他全局状态),它们本身就不会导致在多线程环境中运行任何问题。每个静态方法调用都将创建自己的局部变量的副本。
答案 1 :(得分:3)
就个人而言,我会避免使用静态方法,因为它会使代码更难以测试。在测试使用它的代码时,您将无法轻松模拟DAL。请注意,这不是LINQ或数据访问层所特有的,它只是代码是类方法而不是实例方法的函数。
答案 2 :(得分:2)
从您提供的代码段中,不清楚各种方法的作用。我看待它的方式,只要你使用局部变量,它就是安全的。