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
}
我有以下控制器
- 用户控制器
- 线程控制器
- 帖子控制器
当我想检索特定线程或线程列表时,我点击 ThreadsController。
当我想检索特定线程的帖子时,我点击了 PostsController
问题:
如果我想检索用户创建的线程列表,以下哪项是最佳方法:
新建一个控制器——UserThreadsController,其中returns一个Thread对象列表
在 ThreadsController 上创建一个额外的操作方法,即 GetByUser
在 UserController 上创建一个额外的操作方法,即 GetThreads
谢谢
由于固执己见,这很可能会被关闭,因为,确实如此。我个人的看法是你已经有点太分离了。
实体和控制器之间不需要一对一的关联。事实上,通常情况下,让控制器保持在更高层次一点更好,封装概念,而不是单一的东西。例如,您可以只有一个 ForumController
,其中包含列出所有线程和显示单个线程的操作。至少在我遇到的每个论坛中,单个帖子永远不会单独显示,因此您甚至不需要对这些帖子执行任何操作。
显示特定于用户的线程有点麻烦。在 UserController
上有这样的东西是有意义的,但在 ForumController
上有所有与论坛相关的东西也是有意义的。我认为你可以合理地选择任何一种方式。
这是一个假设性问题,假设我有一个非常基础的论坛
我有以下实体(对象)
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,其中returns一个Thread对象列表
在 ThreadsController 上创建一个额外的操作方法,即 GetByUser
在 UserController 上创建一个额外的操作方法,即 GetThreads
谢谢
由于固执己见,这很可能会被关闭,因为,确实如此。我个人的看法是你已经有点太分离了。
实体和控制器之间不需要一对一的关联。事实上,通常情况下,让控制器保持在更高层次一点更好,封装概念,而不是单一的东西。例如,您可以只有一个 ForumController
,其中包含列出所有线程和显示单个线程的操作。至少在我遇到的每个论坛中,单个帖子永远不会单独显示,因此您甚至不需要对这些帖子执行任何操作。
显示特定于用户的线程有点麻烦。在 UserController
上有这样的东西是有意义的,但在 ForumController
上有所有与论坛相关的东西也是有意义的。我认为你可以合理地选择任何一种方式。