【发布时间】:2014-02-01 07:03:13
【问题描述】:
我正在开发一个需要为其编写数据访问层的应用程序。我的第一个想法是为我需要的每个实体创建一堆存储库,但我现在面临着分离存储库不同操作的挑战。我想听听您对此的看法。
首先,我想支持两种类型的数据库通信 - 直接 sql 查询(例如,插入、更新等)和批量插入,例如从文件(或其他来源)加载数据。但是,这两种实现都做不同的事情:
- 简单的存储库触发对 SQL 服务器的查询
- 批量存储库首先将记录添加到文件或内存中。处理完所有记录后,它会与数据库同步。
我对这个类结构的第一次尝试是:
public class Product{
}
public interface IProductRepository {
Product GetProduct(int id);
void CreateProduct(Product p);
}
public class SqlProductRepository : IProductRepository
{
public Product GetProduct(int id)
{
throw new NotImplementedException();
}
public void CreateProduct(Product p)
{
throw new NotImplementedException();
}
}
public class BulkLoadRepository : IProductRepository
{
public Product GetProduct(int id)
{
throw new NotImplementedException();
}
public void CreateProduct(Product p)
{
throw new NotImplementedException();
}
}
但是,此结构在最后缺少批量存储库的同步功能。如果我最终添加了一个 Sync() 函数,我需要将它留空以用于“简单”存储库。
关于如何支持这两种功能但仍将它们隐藏在一个界面后面的任何想法?
提前致谢!
【问题讨论】:
标签: c# architecture repository-pattern data-access-layer