Дозвуковой класс имеет ссылку на HttpContext. Текущий. Пользователь в Приложении Windows

Я использую SubSonic 2.1. Я выполнил его против базы данных, и это создало все файлы по-видимому правильно. Однако, когда я пошел для использования одного из классов, приложение не будет созданный. Я делаю Приложение Windows, но в файле SubSonic существует ссылка на HttpContext. Текущий. Пользователь. Кто-либо знает, почему это произошло бы?

1
задан Doug Dawson 13 June 2010 в 20:35
поделиться

1 ответ

SubSonic изначально был разработан для использования в приложении asp.net.

Однако он очень хорошо работает в приложении Windows.Forms. Но вам необходимо включить System.Web в ваш проект.

Посмотрите в ClassTemplate.aspx: http://github.com/subsonic/SubSonic-2.0/blob/master/SubSonic/CodeGeneration/Templates/CS_ClassTemplate.aspx

if (System.Web.HttpContext.Current != null)
    item.Save(System.Web.HttpContext.Current.User.Identity.Name);
else
    item.Save(System.Threading.Thread.CurrentPrincipal.Identity.Name);

Если код выполняется внутри веб-страницы asp.net, он извлекает имя пользователя из контекста, а снаружи получает имя пользователя из текущего потока.

В subsonic существует соглашение, что если ваша таблица содержит столбцы CreatedBy и ModifiedBy и вы используете метод item.Save("username"), то эти столбцы тоже будут обновлены.

Если вы измените файл CS_ClassTemplate.aspx так, чтобы он не использовал System.Web, и перегенерируете свой DAL, вам, вероятно, больше не понадобится ссылка на System.Web.

2
ответ дан 2 September 2019 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: