Ich musste nur ein ORM auswechseln und es war eine relativ entmutigende Aufgabe, da die Abfragelogik überall leckte. Wenn ich jemals eine neue Anwendung entwickeln müsste, wäre es meine persönliche Präferenz, die gesamte Abfragelogik (unter Verwendung eines ORM) zu kapseln, um sie zukunftssicher für Änderungen zu machen. Das Repository-Muster ist recht schwierig zu codieren und zu pflegen. Daher habe ich mich gefragt, ob es noch andere Muster gibt, mit denen das Problem behoben werden kann.
Ich kann Beiträge vorhersehen, in denen es darum geht, keine zusätzliche Komplexität hinzuzufügen, bevor es tatsächlich benötigt wird, agil zu sein usw. Aber ich bin nur daran interessiert, wie vorhandene Muster ein ähnliches Problem auf einfachere Weise lösen.
Mein erster Gedanke war, ein generisches Typrepository zu haben, zu dem ich über Erweiterungsmethoden nach Bedarf Methoden zu bestimmten Typrepository-Klassen hinzufüge, aber das Testen statischer Methoden durch Einheiten ist furchtbar schmerzhaft. IE:
public static class PersonExtensions
{
public static IEnumerable<Person> GetRetiredPeople(this IRepository<Person> personRep)
{
// logic
}
}