这是一个假设的问题,假设我有一个非常基本的论坛
我有以下实体(对象)
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
}
我有以下控制器
当我想要检索特定线程或线程列表时,我点击了ThreadsController。
当我想检索特定线程的帖子时,我点击了PostsController
问题:
如果我想检索用户创建的线程列表,那么以下哪种线程是最好的方法:
创建一个新的控制器 - UserThreadsController,它返回一个Thread对象列表
在ThreadsController上创建一个额外的操作方法,即GetByUser
在UserController上创建一个额外的操作方法,即GetThreads
由于
答案 0 :(得分:2)
这可能会因为自以为是而被关闭,因为它确实如此。我个人认为你已经有太多的分离了。
实体和控制器之间不需要1-1相关。实际上,保持控制器比这更高级,通常更好,封装概念,而不仅仅是一件事。例如,您可能只有ForumController
,其中包含列出所有线程的操作,以及显示单个线程的操作。至少在我遇到过的每个论坛中,个别帖子都不是自己展示的,所以你甚至不需要为这些帖子采取行动。
显示特定于用户的线程有点折腾。在UserController
上使用这样的内容是有意义的,但是在ForumController
中包含所有与论坛相关的内容也是有意义的。我认为你可以合理地走任何一条路。