我正在爲我的項目創建一個存儲庫,實際上是它的一個子集,使用c#,poco和舊的ado.net(沒有ORM的)。 我有幾個實體,我的存儲庫會通過DAL對這些實體進行CRUD。 我的DAL是IDisposable,所以我設法在實例化它時關閉數據庫連接,並在Dispose方法中關閉連接。 現在我想知道,我是否需要在存儲庫中爲每個實體使用一個類或爲它們全部使用一個大類? 第二種方法將允許我打開連接,檢索許多實體,然後關閉它。第一個我必須打開並關閉每個實體的一個連接,如下所示:在一個使用c#的倉庫中,poco和ado.net什麼是最好的,一個類用於整個倉庫還是每個實體有幾個類?
//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的內容,這提示了另一種方法。 這是一個相當簡單的示例,我的存儲庫不一定非常複雜。
聽起來不錯!我忘了IoC ... – 2013-04-10 21:26:00