私は自分のプロジェクトのリポジトリを作成しています。実際にはそのサブセットであり、c#、poco、および古い ado.net (ORM なし) を使用しています。私はいくつかのエンティティを持っており、リポジトリは DAL を介してそれらを CRUD します。私のDALはIDisposableなので、データベースをインスタンス化するときにデータベースへの接続を開き、Disposeメソッドでその接続を閉じることができました。今知りたいのですが、リポジトリでエンティティごとに1つのクラスを使用する必要がありますか、それともそれらすべてに対して1つの巨大なクラスを使用する必要がありますか? 2 番目のアプローチでは、接続を開き、必要に応じて多くのエンティティを取得してから閉じることができます。次のように、エンティティごとに 1 つの接続を開いたり閉じたりした最初のもの:
//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 について読みました。これはかなり単純な例であり、私のリポジトリはそれほど洗練されている必要はありません。