Как я могу удалить общие переменные из старого кода
В системе есть синглтон для текущего зарегистрированного пользователя (наш собственный пользователь, а не пользователь Windows), содержащий общий экземпляр.
В нескольких сотнях файлов классов доступа к данным это используется для установки CreatebyID и EditbyID для каждого запроса, отправляемого в базу данных. Почти все классы наследуют одну базу, хотя на данный момент два значения установлены в каждом классе.
Все это прекрасно работало в настольных приложениях компаний в течение многих лет, однако, когда в новом веб-приложении использовались одни и те же классы доступа к данным, текущий зарегистрированный пользователь был общим для всех сеансов пользователей и не мог быть изменен без возникновения проблем.
Как я могу реорганизовать код без существенной перезаписи всего DAL и без передачи текущего пользователя (или идентификатора пользователя) в каждый экземпляр или установки свойства EditbyID для каждого класса для каждого сохранения.
1 ответ
Вы можете использовать статическое свойство, которое получает / устанавливает переменную Session через HttpContext.Current.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;
}
}
}