在 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 模式将实现数据的存储方式,您将在不知道它们是如何存储的情况下使用您的实体。
我正在开发一个 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 模式将实现数据的存储方式,您将在不知道它们是如何存储的情况下使用您的实体。