数据库访问的静态类?

时间:2010-02-08 18:25:25

标签: asp.net c#-3.0

我使用DataClassesDataContext将db中的所有表映射到我的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;
    }
}

我不确定这种在Web应用程序中执行数据库操作的方式是否安全? 如果没有,你能建议一个更好的模式吗?

3 个答案:

答案 0 :(得分:2)

当DataClassesDataContext实现IDisposable时,你应该用using指令包装它:

using (DataClassesDataContext db = new DataClassesDataContext())
{
...
}

答案 1 :(得分:1)

我建议看一下存储库模式:

1)Example 1
2)Example 2(Scott Gu的第一章来自Nerd Dinner - 它用于MVC但是Repository模式说明了没有MVC的作品)

答案 2 :(得分:1)

我会非常小心在Web应用程序中使用STATIC。有时错误是如此微妙,以至于你会花很多时间调试。

我认为bnkdev& Oded击中头部的钉子:看看存储库模式&将您的上下文调用包装在using语句中......

HTH。