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