2010-06-13 2 views
1

J'utilise SubSonic 2.1. Je l'ai couru contre une base de données et il a créé tous les fichiers apparemment correctement. Cependant, quand je suis allé utiliser l'une des classes, l'application ne serait pas construite. Je crée une application Windows, mais dans le fichier SubSonic, il y a une référence à HttpContext.Current.User. Est-ce que quelqu'un sait pourquoi cela arriverait? SubSonic a été initialement conçu pour être utilisé dans une application asp.net.La classe Subsonic fait référence à HttpContext.Current.User dans une application Windows

Répondre

2

Cependant, cela fonctionne très bien dans une application Windows.Forms. Mais vous devez inclure System.Web dans votre projet.

Regardez dans le 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); 

Si le code est exécuté à l'intérieur d'une page Web asp.net il tire le nom d'utilisateur du contexte et obtient en dehors du nom d'utilisateur du thread courant.

Il existe une convention en subsonic qui, si votre table contient une colonne CreatedBy et ModifiedBy et que vous utilisez la méthode item.Save ("username"), ces colonnes sont également mises à jour.

Si vous modifiez le fichier CS_ClassTemplate.aspx pour ne pas utiliser System.Web et régénérer votre DAL, vous n'aurez probablement plus besoin de la référence à System.Web.

+0

Ah, je vois! Je pensais que j'avais cassé quelque chose, LOL! Merci! –

Questions connexes