在 Repository Pattern 中,Repository 是否必须是一个 Collection Like 接口?

In the Repository Pattern, does the Repository have to be a Collection Like interface?

我正在开发一个 Windows 应用程序,并尝试通过应用存储库模式来分离层。业务层使用的集合可以通过转换为字符串数据来保存和加载。例如字符串数据格式如下

"0,e0数据,1,e1数据,2,e2数据"

逗号分隔的两个值代表Collection中的一个元素,第一个值表示索引。在业务层,可以改变集合中元素的顺序,当然改变后的顺序会存储为字符串数据。

"0,e2数据,1,e1数据,2,e0数据"

但是,在这种情况下,通用的 Repository 接口方法似乎是个问题。例如,Repository 的 Add() 方法添加单个元素,但存储的字符串数据需要集合中的整个数据。如果单个元素顺序已经更改,则会出现问题。

在业务层中,该集合的元素仅部分未使用。始终使用所有元素。在这种情况下,Collection Like 接口可能不适合。你怎么看?如果我使用Collection Like以外的接口,是否可以使用传递Collection本身的接口?

public interface IExampleRepository<T>
{
   IEnumerable<T> Get();
   void Add(IEnumerable<T> collection);
   void Remove();
}

您必须使用实体模型。数据如何存储并不重要。 我认为您要构建的实体必须是

public class MyData
{
    public int Order { get; set; }
    public string Data { get; set; }
}
// ...
new MyData // first data
{
    Order = 0,
    Data = "e0 data",
}

repositoty 模式将实现数据的存储方式,您将在不知道它们是如何存储的情况下使用您的实体。