我有一个分层应用程序。我试图确定在何处放置一个方法,该方法返回填充有关活动用户的信息的对象。这些图层是:
我应该将方法放在哪一层?这是方法:
internal static User ActiveUser()
{
var name = System.Threading.Thread.CurrentPrincipal.Identity.Name;
if (string.IsNullOrEmpty(name))
{
return null;
}
else
{
using (EfContext db = new EfContext())
{
return db.Users.Single(u => u.UserName.ToLower().Equals(name.ToLower()));
}
}
}
答案 0 :(得分:0)
我的回答是“方法”不应该存在。至少不像现在这样。获取CurrentPrincipal
名称可能是您的域(域服务)或单独的应用程序服务的函数,而不是DAL。
但是EfContext
不应该对域可见,甚至对UI也不可见。通常的做法是将其封装在存储库中。
因此,您的域/应用程序服务可以按名称“询问”您的存储库User
。
public User GetUser(string name)
{
using (EfContext db = new EfContext())
....
}