Asp.net 数据库访问的静态类?

Asp.net 数据库访问的静态类?,asp.net,c#-3.0,Asp.net,C# 3.0,我使用DataClassesDataContext将数据库中的所有表映射到我的asp.net应用程序中 为了执行CRUD操作,我用方法创建了静态类,每个方法内部都有一个实例化DataClassesDataContext 例如: public static class UserQ { public static User getUserById(int userId) { DataClassesDataContext db = new DataClassesData

我使用DataClassesDataContext将数据库中的所有表映射到我的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应用程序中执行数据库操作的方法是否安全?
如果没有,您能推荐一个更好的模式吗?

我建议您看看存储库模式:

1)

2) (Scott Gu在《Nerd晚餐》中的第一章——它是为MVC而写的,但所示的存储库模式在没有MVC的情况下仍然有效)

我建议大家看看存储库模式:

1)

2) (Scott Gu在《Nerd晚餐》中的第一章-它是针对MVC的,但所示的存储库模式在没有MVC的情况下有效)

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

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

由于DataClassesDataContext实现了
IDisposable
,您应该使用using指令对其进行包装:

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

在web应用程序中使用STATIC时,我会非常小心。有时错误是如此微妙,以至于您将花费大量时间进行调试

我认为bnkdev&Oded一针见血:查看存储库模式并将您的上下文调用包装在using语句中


HTH.

在web应用程序中使用静态时,我会非常小心。有时错误是如此微妙,以至于您将花费大量时间进行调试

我认为bnkdev&Oded一针见血:查看存储库模式并将您的上下文调用包装在using语句中


嗯。

我同意。它确实会简化事情,在LINQ到SQL的情况下,如果您依赖IQueryable,它将大大提高您的性能。看看这里,谢谢。以前从未听说过存储库模式。在对文章进行放射线处理后,我可以说:太好了!我同意。它确实会简化事情,在LINQ到SQL的情况下,如果您依赖IQueryable,它将大大提高您的性能。看看这里,谢谢。以前从未听说过存储库模式。在对文章进行放射线处理后,我可以说:太好了!