.Net Core服务的体系结构,实体框架和职责

时间:2018-08-28 13:33:06

标签: c# asp.net entity-framework-core

我正在开发一个带有angular + net core 2.1和entity framework core的项目。

在我的后端,我具有以下结构:

FooController-> FooService-> FooRepository-> FooEFContext

控制器仅将请求路由到正确的服务。

服务了解事物运作的业务逻辑。

存储库抽象EF。

EFContexts访问数据。

现在,假设我有两个这样的实体:

雇员n ... 1公司(其中一家公司可能有n名雇员,而一个雇员最多只有1家公司)

现在想象一下我正要更新特定员工的公司数据的时候:

public void Post([FromBody]Company newData) {
  var user = _userService.GetUser( // id of current logged user );
  ...
  // Get the company associated with the user
  ...
  _companyService.Update(company)
}

我应该如何获得公司?我有两种选择:

_userService.GetUser(..)返回带有相关实体(公司,位置,..其他)的所有详细信息的用户

_userService.GetUser(..)仅返回用户信息,不包括所有详细信息,然后调用:

_companyService.GetCompany( user.companyId)

在第一种情况下,我可能必须在服务中使用2种不同的方法:一种仅获取用户数据,而另一种获取用户数据以及所有关联实体的所有详细信息。

在第二种情况下,我对数据库进行了两次往返,但是我对每个服务都保留了更严格的“单一责任”概念。

您认为哪种方法更好?有什么我想念的吗?

非常感谢您:)

1 个答案:

答案 0 :(得分:0)

在这种情况下,我也曾多次质疑自己,但我真的认为,只有一心一意使事情变得渺小是可行的(因此,第二种选择)。您指出不利的一面是更多的DB调用(需要注意),但是在这种情况下,我认为额外的调用并不能保证将所有关联的实体一起返回。

相关问题