0

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

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

  1. 每个标签都属于一个标签类别。
  2. 一个视频可能有也可能没有多个与之关联的演员和标签。
  3. 演员和标签可能有也可能没有多个与之关联的视频。

这对我来说是模糊的:

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

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

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

4

1 回答 1

2

您应该只有一个用于聚合根的存储库。

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

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

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

于 2012-07-18T23:41:48.373 回答