在系统中,有一个包含共享实例的当前登录用户(我们自己的用户而不是Windows用户)的单例。
在几百个数据访问类文件中,这用于为发送到数据库的每个请求设置CreatebyID和EditbyID。几乎所有的类都继承了一个基类,尽管目前在每个类中都设置了两个值。
这对于公司桌面应用程序多年来一切正常,但是当在新的Web应用程序中使用相同的数据访问类时,当前记录的用户在所有用户会话中共享,并且在不引起问题的情况下无法更改。
如何在不显着重写整个DAL的情况下重构代码,并且不会将当前用户(或用户ID)传递到每个实例中,或者为每次保存在每个类上设置EditbyID属性。
答案 0 :(得分:1)
您可以使用通过HttpContext.Current.Session
获取/设置Session变量的静态属性。
例如:
public class DAL
{
public static int CreatebyID
{
get
{
return (int)HttpContext.Current.Session["CreatebyID"];
}
set
{
HttpContext.Current.Session["CreatebyID"] = value;
}
}
public static int EditbyID
{
get
{
return (int)HttpContext.Current.Session["EditbyID"];
}
set
{
HttpContext.Current.Session["EditbyID"] = value;
}
}
}