我會對您如何看待Repository模式有所意見。經典和DDD透視圖中存儲庫的預測
在「舊」域概念(例如P of EAAA)中,存儲庫應該像一個「內存集合」,所以它應該總是返回相同的類型,所以如果你需要一個投影你必須把它,所以投影將在服務層進行例如,對吧?或者可以直接進入「域」項目?
E.g.
public class CustomerRepository
{
//Constructor accepts an IRepository<Customer>
public IQueryable<Customer> GetAllDebtors()
{
//Use IRepository<Customer> here to make the query
}
}
相反,國內長途,倉庫,尤其是與CQRS相結合,可以直接因爲該倉庫變成了非規範化的服務回報投影類型,對不對?
E.g.
public class CustomerDenormalizer
{
//Constructor *could* accept an IRepository<Customer>
public IQueryable<Debtor> GetAllDebtors()
{
//Use IRepository<Customer> here to make the query and the projection
}
}
感謝,我的意思不是說在「老」的方式投射不這樣做,我的意思是服務這樣做,而不是倉庫,它是可能的,如果你傳遞一個IQueryable,而不加載完整的對象。我更喜歡這個存儲庫也是這個預測,但我正在和一位同事討論這個問題,但這並不一致。 –
2013-04-04 15:44:54
我不確定我明白你在問什麼。是否應該使用IQueryable在內存中進行投影? –
eulerfx
2013-04-04 17:14:12
我的問題是,在「舊」域方法中,我可以將投影直接放入存儲庫中,因此我返回不同類型的對象(基於投影的類型),或者更好地始終返回「基本」實體鍵入並在我使用存儲庫的位置進行投影(例如,在服務層中)。顯然,這兩種方法都不應該加載完整的對象。所以問題是:從設計的角度來看,哪裏更好地進行投影?對我來說就是把它放到Repository中。 – 2013-04-04 17:24:55