Subsonic类在Windows应用程序中引用了HttpContext.Current.User

时间:2010-06-13 20:35:12

标签: subsonic

我正在使用SubSonic 2.1。我在数据库上运行它,它似乎正确地创建了所有文件。但是,当我去使用其中一个类时,应用程序将无法构建。我正在制作一个Windows应用程序,但在SubSonic文件中有一个对HttpContext.Current.User的引用。有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:2)

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网页内执行,则从上下文中提取用户名,而外部从当前线程获取用户名。

在亚音速中有一个约定,如果你的表包含CreatedBy和ModifiedBy列,并且你使用item.Save(“username”)方法,这些列也会被更新。

如果将CS_ClassTemplate.aspx文件更改为不使用System.Web并重新生成DAL,则可能不再需要对System.Web的引用。