Sto considerando come scrivere un repository per un nuovo progetto.
Mi piace l'idea di un repository generico come questo per le operazioni CRUD di base:
public class Repository<TEntity> : IRepository<TEntity> where TEntity : class, IEntity
Tuttavia, ho anche letto che questo è contro lo spirito del DDD. Pertanto, come compromesso, stavo pensando di creare un repository generico e quindi alcuni repository che ne ereditano, ad es. CustomerRepository: Repository
ecc. Tuttavia, non riesco a trovare alcuna documentazione a supporto di questa idea.
D1) È ragionevole creare un repository di base?
Inoltre, sto provando a creare un repository per radice aggregata piuttosto che un repository per entità. Supponiamo di avere due classi, ad esempio Order e OrderItem (Order è la radice di aggresgate), quindi:
D2) È ragionevole che tutti gli accessi ai dati dell'Ordine Ordine vadano nel repository dell'Ordine (la radice aggregata)? vale a dire SELECT * FROM OrderItem WHERE OrderID=@OrderID
(si traduce in LINQ).