我应该在哪个层放置方法来返回当前用户的信息?

时间:2012-03-19 17:24:46

标签: entity-framework data-access-layer

我有一个分层应用程序。我试图确定在何处放置一个方法,该方法返回填充有关活动用户的信息的对象。这些图层是:

  1. 数据访问层(实体框架)
  2. 域层(POCOs)
  3. UI层(Web,移动和Windows)
  4. 我应该将方法放在哪一层?这是方法:

        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()));
                }
            }
        }
    

1 个答案:

答案 0 :(得分:0)

我的回答是“方法”不应该存在。至少不像现在这样。获取CurrentPrincipal名称可能是您的域(域服务)或单独的应用程序服务的函数,而不是DAL。

但是EfContext不应该对域可见,甚至对UI也不可见。通常的做法是将其封装在存储库中。

因此,您的域/应用程序服务可以按名称“询问”您的存储库User

public User GetUser(string name)
{
    using (EfContext db = new EfContext())
    ....
}