加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用MVC控制器中的命令查询分离原则

发布时间:2020-12-15 03:45:24 所属栏目:百科 来源:网络整理
导读:我喜欢 Command Query Separation的想法,但是无法看到如何在添加实体的MVC Controller操作中使用它,并且在添加实体后需要新实体的ID. 例如,在下面的简化示例中,服务用于创建新项目: public ActionResult Assign(AssignViewModel viewModel){ var newItem =
我喜欢 Command Query Separation的想法,但是无法看到如何在添加实体的MVC Controller操作中使用它,并且在添加实体后需要新实体的ID.

例如,在下面的简化示例中,服务用于创建新项目:

public ActionResult Assign(AssignViewModel viewModel)
{
     var newItem = _AssignItemService.AssignItem(viewModel.ItemName,viewModel.ItemValue);

     return RedirectToAction("ListItem",new {id = newItem.Id);
}

但是当我重定向到要显示新项目的操作时,我需要知道新创建的项目的ID,以便可以从数据库中检索它.所以我必须要求服务返回新创建的项目(或至少,它的ID).

在纯CQS中,命令没有返回值,因此上面的模式将是无效的.

任何建议都感激不尽.

解决方法

你应该传递给AssignItem方法一个从viewmodel的值创建的“Item”实例(或者你的实体名称是什么),然后该方法不必返回任何东西,而是只更新实体的Id属性,使其成为Command方法.

然后,您可以将entity.Id用于您想要的任何内容

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读