博客可以拥有与用户发布的帖子一样多的帖子,所有帖子都来自拥有博客的同一用户(即如果John拥有博客Food,只有John可以在此博客中发布).当然,每个帖子都有一个父级博客.
然后我有用户个人资料页面,我想要显示所有用户详细信息,他所有博客的名称,以及最近5个帖子.
然后我有一个博客页面,显示博客的详细信息,所有者的名称(用户)和所有帖子的标题.
然后我有一个帖子页面,显示帖子详细信息,博客名称和所有者名称.
如你所见,我在所有人之间都有关系,但他们都不能作为聚合.
在代码中定义实体并不困难,我所遇到的问题是定义存储库.我需要多少钱? 3 – 每个实体一个? 1 – 什么都有?我该如何进行查找?
例如,获取用户页面中的最后5个帖子.用户没有引用帖子,而是拥有博客容器,其中每个博客依次拥有帖子的容器.我的存储库中是否应该有一个接受UserID并返回帖子列表的方法?或者它应该是一个服务?另外,我通常不会执行所有数据的加载,而是延迟加载.通过检索现有的用户实体,除非需要(首次访问时),否则我不会加载其博客.
提前致谢.
>用于处理帖子和评论的PostRepository
> BlogRepository主要用于搜索
> UserRepository
如果您不打算支持评论,我会删除帖子库并处理BlogRepository中的帖子
我通常在使用它们之后对存储库进行建模,并避免聚合嵌套(超过两个级别).
For example to get the 5 last posts in the user page. User does not have reference to Posts,instead in holds a container of Blogs where each Blog in turn holds container of Posts.
Should I have a method in my repository that accepts the UserID and returns a list of Posts?
是.
Or maybe it should be a Service?
服务用于从使用域模型的代码中删除业务逻辑.在得到那种逻辑之前不要创建它们.
Also I don’t usually perform loading of all the data but instead I have lazy loading. By retrieving an existing User entity,I would not load its blogs unless they are needed (when first time accessed).