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