C# 我应该实现存储库和xml服务吗?

C# 我应该实现存储库和xml服务吗?,c#,service,xml-serialization,repository,repository-pattern,C#,Service,Xml Serialization,Repository,Repository Pattern,对于如何在Xml文件中存储像Person这样的简单类,我有些疑问 据我所知,我必须首先创建Xml服务,它包含GetPersons()和SavePersons(IEnumerable persons)等函数 我的存储库应该包含一些类似于可能的查询,Add和Remove。我真的很想有人解释我如何开始实现这两件事?其主要思想是将其存储在xml文件中,并从存储库中获取一些查询。存储库模式背后的思想是隐藏数据存储的详细信息。因此,存储库的用户只能看到具有以下方法的界面: public interface

对于如何在Xml文件中存储像
Person
这样的简单类,我有些疑问

据我所知,我必须首先创建Xml服务,它包含
GetPersons()
SavePersons(IEnumerable persons)
等函数


我的存储库应该包含一些类似于可能的查询,
Add
Remove
。我真的很想有人解释我如何开始实现这两件事?其主要思想是将其存储在xml文件中,并从存储库中获取一些查询。

存储库模式背后的思想是隐藏数据存储的详细信息。因此,存储库的用户只能看到具有以下方法的界面:

public interface IPersonRepository
{
    void Add(Person person);
    void Remove(Person person);

    void GetById(int personId);
}
如果希望使用XML作为数据存储,则应创建一个实现
IPersonRepository
接口的
XmlPersonRepository
。在这些方法中,您可以使用.NET类直接访问XML文件,或者您可以将XML数据加载到
数据集
中,并以更为相关的方式访问它

如果您有多个存储库,您会怎么做?一个用于人员,一个用于产品,一个用于订单。如果您希望单个事务跨越这三个存储库并将更改保存在一个块中,那么还需要另一个模式。工作单位

将工作单元定义为:

维护受业务事务影响的对象列表,以及 协调变更的写出和变更的解决 并发问题


当你说xml服务时,你是指使用xml的web服务吗?如果是这样的话,有什么理由需要将数据存储在xml中,或者可以使用数据库吗?不,我不是指web服务,它只是负责访问数据的类的名称。这就是allI的想法,实现IPersonRepository的类应该在其构造函数中知道类似IDataService的内容(如果我想存储在数据库或Xml文件中),我不会这样做。那么,您的存储库将只是完成实际工作的类的包装器。如果存储库的目的是封装数据存储,那么为什么还要添加更多的间接层呢?还有一个疑问,那么当我必须获取一些数据时,从哪里获取这些数据呢?从变量(先前加载的数据)或从访问数据..你说的“从变量”或“从访问数据”是什么意思?你从调用存储库获取数据。应该对用户隐藏存储库的实现。您的XML存储库可以每次访问XML文件,也可以进行一些缓存。