使用相关列表数据保存域模型

时间:2012-12-04 19:51:08

标签: asp.net-mvc domain-driven-design

我有这个实体:

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

2 个答案:

答案 0 :(得分:2)

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

  1. 实体按ID加载。
  2. 在传递了必需参数的实体上调用行为。
  3. 提交更改 - 通过显式保存存储库或提交环境事务和工作单元。
  4. 此代码可以直接在MVC控制器中,也可以在控制器引用的应用程序服务中。

答案 1 :(得分:1)

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

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

_repository.Save(task, users)