MVC 实体分离最佳实践

MVC Entity separation best practise

这是一个假设性问题,假设我有一个非常基础的论坛

我有以下实体(对象)

public class User 
{
    public Guid Id { get; set;}
    public string Username { get; set;}
}

public class Thread
{
    public Guid Id { get; set;}
    public Guid Owner { get; set;}//UserId
    public string Title { get; set; }
    public DateTime DateCreated { get; set; }
}

public class Post
{
    public Guid Id { get; set; }
    public Guid ThreadId { get; set; }
    public string Content { get; set; }
    public DateTime DatePosted { get; set; }
    public Guid PostedBy { get; set; }//UserId
}

我有以下控制器

  1. 用户控制器
  2. 线程控制器
  3. 帖子控制器

当我想检索特定线程或线程列表时,我点击 ThreadsController。

当我想检索特定线程的帖子时,我点击了 PostsController

问题:

如果我想检索用户创建的线程列表,以下哪项是最佳方法:

  1. 新建一个控制器——UserThreadsController,其中returns一个Thread对象列表

  2. 在 ThreadsController 上创建一个额外的操作方法,即 GetByUser

  3. 在 UserController 上创建一个额外的操作方法,即 GetThreads

谢谢

由于固执己见,这很可能会被关闭,因为,确实如此。我个人的看法是你已经有点太分离了。

实体和控制器之间不需要一对一的关联。事实上,通常情况下,让控制器保持在更高层次一点更好,封装概念,而不是单一的东西。例如,您可以只有一个 ForumController,其中包含列出所有线程和显示单个线程的操作。至少在我遇到的每个论坛中,单个帖子永远不会单独显示,因此您甚至不需要对这些帖子执行任何操作。

显示特定于用户的线程有点麻烦。在 UserController 上有这样的东西是有意义的,但在 ForumController 上有所有与论坛相关的东西也是有意义的。我认为你可以合理地选择任何一种方式。