具有多个数据源时存储库方法的实现

Implementation of repository method when having multiple datasources

我正在从 CSV 文件中读取数据并将其放入关系数据库。

如果我要使用存储库模式,我应该如何实现 GetAll 方法? 它应该 return 来自数据库还是来自 CSV 文件的所有数据?

提前致谢!

你会有这样的界面:

public interface IRepository
{
   IEnumerable<MyModel> GetAll();
   void Save(IEnumerable<MyModel> data);
}

那么,您将拥有:

public class CsvRepository: IRepository
{
   IEnumerable<MyModel> GetAll()
  {
    // data from Csv
  }
   void Save(IEnumerable<MyModel> data) 
  {
   // save to csv
  }
}

public class DbRepository: IRepository
{
   IEnumerable<MyModel> GetAll()
  {
    // data from db
  }
   void Save(IEnumerable<MyModel> data) 
  {
   // save to db
  }
}

然后你可以这样做:

var csv = new CsvRepository();
var db = new DbRepository();

db.Save(csv.GetAll());