我正在为我的项目创建一个存储库,实际上是它的一个子集,带有 c#、poco 和旧的 ado.net(没有 ORM)。我有几个实体,我的存储库将通过 DAL 对它们进行 CRUD。我的 DAL 是 IDisposable,因此我在实例化它时设法打开了与数据库的连接,并在 Dispose 方法中关闭了该连接。现在我想知道,我应该在存储库中为每个实体使用一个类还是为所有实体使用一个巨大的类?第二种方法将允许我打开连接,根据需要检索许多实体,然后关闭它。第一个我必须为每个实体打开和关闭一个连接,如下所示:
//One big class for all entities, opens one connection
using(RepositoryForAll rfa = new RepositoryForAll())
{
Customer c = rfa.GetCustomer(Customerid);
Order o = rfa.GetOrder(OrderId);
}
//closes the connection
//One repository class per entity, also one connection
using(RepositoryCustomer customers = new RepositoryCustomer())
{
var c = customers.Get(CustomerId);
}
//closes the connection for RepositoryCustomer
using(RepositoryOrder orders = new RepositoryOrder())
{
var c = orders.Get(OrderId);
}
//closes the connection for RepositoryOrder
这有意义吗?我在某本书中读到了 AggregateRoot,它提出了另一种方法。这是一个相当简单的示例,我的存储库不必那么复杂。