Как я могу удалить общие переменные из старого кода

В системе есть синглтон для текущего зарегистрированного пользователя (наш собственный пользователь, а не пользователь 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;
        }
    }
}
Другие вопросы по тегам