Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 我应该放置哪个层的方法来返回当前用户';什么信息?_Entity Framework_Data Access Layer - Fatal编程技术网

Entity framework 我应该放置哪个层的方法来返回当前用户';什么信息?

Entity framework 我应该放置哪个层的方法来返回当前用户';什么信息?,entity-framework,data-access-layer,Entity Framework,Data Access Layer,我有一个分层的应用程序。我试图确定在何处放置一个方法,该方法返回一个填充了活动用户信息的对象。各层为: 数据访问层(实体框架) 域层(POCOs) UI层(Web、移动和Windows) 我应该将方法放在哪一层?方法如下: internal static User ActiveUser() { var name = System.Threading.Thread.CurrentPrincipal.Identity.Name; if (string.

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

  • 数据访问层(实体框架)
  • 域层(POCOs)
  • UI层(Web、移动和Windows)
  • 我应该将方法放在哪一层?方法如下:

        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()));
                }
            }
        }
    
    我的答案是“该”方法不应该存在。至少不像现在这样。获取
    CurrentPrincipal
    名称可能是您的域(域服务)的一个功能,或者是一个单独的应用程序服务,而不是DAL

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

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

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