寻找关于高度相关实体的存储库模式的基本指针

时间:2012-07-18 23:31:34

标签: c# entity-framework-4 sql-server-ce

我正在使用SQL Server CR E 3.5在C#中编写数据库应用程序,并希望实现存储库模式。我在Google和SO上都做了几次搜索;但是,我找不到符合我需求的实现,所以我会直接询问SO社区。

我的应用中的关键业务对象是:视频,演员,标签类别和标签。基本业务规则如下:

  1. 每个代码都属于代码类别。
  2. 视频可能有也可能没有与之关联的多个演员和标签。
  3. 演员和代码可能有也可能没有与之关联的多个视频。
  4. 以下事情对我来说很模糊:

    1. 我应该实现包含actor,标记类别和标记的视频存储库,还是应该每个业务对象都有自己的存储库?鉴于这些对象可以独立存在,我倾向于为每个对象创建一个存储库。

    2. 如果每个对象都应该有自己的存储库,我该如何关联它们?例如,视频存储库是否应包含一个查询标记存储库以查找匹配项的属性?

    3. 我正在寻找一些指导方针或最佳做法来进行此设置。我理解存储库模式的基础知识,但我需要一些关于如何将它们连接在一起的建议。

1 个答案:

答案 0 :(得分:2)

您应该只拥有aggregate roots的存储库。

我不建议使用存储库作为封装所有查询的方法。存储库不是查询的大倾销场所 - 它们是在DDD最适用的场景中使用的特定工具。有关更多信息,请参阅此文章:http://ayende.com/blog/3955/repository-is-the-new-singleton

不需要'连接'或'关联'存储库。

如果要编写诸如“为该用户借用的视频加载所有标记”之类的查询,最好不要将其放入存储库中。此查询最有可能特定于某种情况,例如一个UI,应该写在需要查询的类的内部或附近。查询的输出可能会映射到专门为UI要求创建的只读数据传输对象,而不是映射到您的实体。