0

我有这个实体:

public class Task
{
     public int Id {get;set;}
     public string Title {get;set;}
     public List<User> Users{get;set;}
}

假设在我的操作中,我从我的视图中获得了一个任务和一个带有用户 ID 的列表,那么用相关数据保存这个对象的正确方法是什么:

public ActionResult Save(Task task, List<int> users)
{
     _repository.Save(task, users) //should I do it?
}

//or it?
public ActionResult Save(Task task, List<int> users)
{
     task.Users = _userRepository.GetAllUsers(users);
     _repository.Save();
}
4

2 回答 2

2

了解存储库中发生的情况可能会有所帮助,但通常,存储库不应调用实体上的任何类型的行为。它应该只负责持久性和重构。一个典型的工作流程如下:

  1. 实体由 ID 加载。
  2. 在传递了所需参数的实体上调用行为。
  3. 更改已提交 - 通过在存储库上的显式保存或通过提交环境事务和工作单元。

此代码可以直接在 MVC 控制器中,也可以在控制器引用的应用程序服务中。

于 2012-12-04T21:22:21.097 回答
1

问题不清楚,但我会做以下事情。如果您比较这两位代码,第一位将对其他人更具可读性,并且它封装了用户不需要知道的所有设置工作。

但是,我不会将其命名为“保存”,它不够具体。

_repository.Save(task, users) 
于 2012-12-05T01:46:50.687 回答