Asp.net mvc 使用相关列表数据保存域模型

Asp.net mvc 使用相关列表数据保存域模型,asp.net-mvc,domain-driven-design,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;} } 公共类任务 { 公共int Id{get;set;} 公共字符串标题{get;set;} 公共列表用户{get;set;} } 使用相关数据保存此对象的正确方法是什么?假设在我的操作中,我从视图中获得一个任务和一个

我有这个实体:

public class Task
{
     public int Id {get;set;}
     public string Title {get;set;}
     public List<User> Users{get;set;}
}
公共类任务
{
公共int Id{get;set;}
公共字符串标题{get;set;}
公共列表用户{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();
}
public ActionResult保存(任务,列出用户)
{
_Save(任务,用户)//我应该这样做吗?
}
//还是它?
公共操作结果保存(任务,列出用户)
{
task.Users=\u userRepository.GetAllUsers(用户);
_Save();
}

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

  • 实体是按ID加载的
  • 在传递了所需参数的实体上调用行为
  • 提交更改—在存储库上显式保存更改,或者提交环境事务和工作单元

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

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

  • 实体是按ID加载的
  • 在传递了所需参数的实体上调用行为
  • 提交更改—在存储库上显式保存更改,或者提交环境事务和工作单元

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

    问题不清楚,但我将执行以下操作。如果比较这两位代码,第一位代码对其他代码的可读性更强,它封装了用户不需要知道的所有设置工作

    不过,我不会把它命名为“保存”,它不够具体

    _repository.Save(task, users) 
    

    这个问题还不清楚,但我会做以下几点。如果比较这两位代码,第一位代码对其他代码的可读性更强,它封装了用户不需要知道的所有设置工作

    不过,我不会把它命名为“保存”,它不够具体

    _repository.Save(task, users) 
    

    那么,您是说在操作中加载用户还是使用服务层?您可以选择这两种方式。如果将此逻辑封装到控制器所引用的应用程序服务中,则可能更容易推断域层的API。另一方面,将该逻辑直接放在控制器中并绕过附加的服务层也没有什么错——控制器可以是服务层。因此,您是说在操作中加载用户还是使用服务层?您可以选择任何一种方式。如果将此逻辑封装到控制器所引用的应用程序服务中,则可能更容易推断域层的API。另一方面,将该逻辑直接放在控制器中并绕过附加服务层也没有什么错-控制器可以是服务层。方法名称只是一个示例:)是的,但为了解释我的问题,它是不必要的。方法名称只是一个示例:)是的,但为了解释我的问题,它是不必要的。