将IRepository模式用于多个域对象和多个存储机制

时间:2013-08-02 01:59:56

标签: c# repository-pattern

这是一个非常简化的示例来演示一个问题。虽然我只在这里显示两个域对象,但想象还有更多具有各种参数。

假设我有以下域对象:

public class Object1
{
    public string Identifier { get; set; }
    public string Name { get; set; }
}

public class Object2
{
    public string Identifier { get; set; }
    public int ItemValue { get; set; }
}

存储库模式的典型实现将具有Object1Repository和Object2Repository,其中每个实现一些IRepository接口,其可以包括AddObject,DeleteObject,GetObjectByIdentifier等方法......然后存储库将知道如何与数据库交互到执行建议的方法。

这一切都很好,而且我已经多次以这种方式使用了Repository模式。现在我有一个问题,我有多种不同的存储机制; Oracle,SQLServer,文本文件和XML文件。支持这一想法的最佳设计方法是什么?存储库的存储库?基本上我想要实现的是让多个不同的对象能够存储到多个不同的存储介质中,我正在尝试将Repository模式应用于这个想法。

我正在编写C#代码,但我也可以阅读大多数其他语言,因此建议的方法不一定是C#。

1 个答案:

答案 0 :(得分:2)

请参考How would I design a repository to handle multiple data access strategies?,我认为这就是你想要的。

基本上假设您已经有一个IRepository接口,其中包含CRUD方法和其他所有其他存储库引用的泛型方法,那么您就有了多个IRepository接口实现。

之后使用任何IOC容器(我使用Windsor Castle)来解析哪个工具的组件应该参与进行应用程序设置的接口。