【问题标题】:Repository pattern design for multiple DbSets [duplicate]多个 DbSet 的存储库模式设计 [重复]
【发布时间】:2014-12-24 05:16:48
【问题描述】:

我正在编写一个 MVC 5 互联网应用程序,现在我开始为我的每个控制器编写一个通用存储库类。

我的问题是:我是否应该为 DbContext 类中的每个不同的 DbSet 编写不同的存储库?

例如,我的DbContext 类中有以下DbSets

public DbSet<File> files { get; set; }

public DbSet<Asset> assets { get; set; }

我是否应该有两个不同的存储库类,一个用于File,一个用于Asset DbSet?或者可以/应该将它们编码到一个存储库类中吗?

【问题讨论】:

  • 通用存储库(带有 ORM)是一种反模式,远离它。在您的情况下,您可能根本不需要存储库模式。

标签: c# entity-framework entity-framework-6 repository-pattern repository-design


【解决方案1】:

老实说,

除非您有充分的理由,否则我不会费心在存储库后面抽象实体框架。你会创造更多的工作,让你在未来变得更难,我相信 EF 已经是对持久性逻辑的一个足够好的抽象。

话虽如此,如果您确实想在存储库后面进行抽象,我将为每个 DbSet 创建 1 个单独的类。这样,DbSet 可以只是存储库上的私有属性,您可以直接在那里委派调用。

如果您决定将它们组合到一个类中,则您的每个方法都必须检查要委托给哪个 DbSet。

【讨论】:

    猜你喜欢
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    相关资源
    最近更新 更多