带有存储库模式的外观。处理简单请求

Facade with repository pattern. Handle simple requests

我正在重组一个非常古老的项目。我使用 Facade static class 将逻辑与前端分开。我还用一个工作单元 class 实现了存储库模式。这个想法是前端只会在外观上做简单的请求。然后外观处理所有事情(通过子系统),那些子classes 将一起使用工作单元。前端永远不会触及解决方案中的 Persistence 项目。

我想知道我应该如何处理简单的请求。就像从 table 中获取特定行一样。现在我必须为每个 table (250+) 创建一个函数。接下来,如果我想从 table 中获取所有行,我必须对所有 table 再次执行相同的操作。这是不可行的,我无法理解它。将持久性项目作为依赖项添加到前端项目打破了整个分层的想法。

我该如何解决这个问题?

所以我缺乏知识。我不知道您可以创建泛型方法(反对泛型 类)。因此,我在外观中添加了一些默认的泛型方法。像这样:

public static List<T> GetAll<T>() where T : class
{
    using (var unitOfWork = new UnitOfWork())
    {
        return unitOfWork.context.Set<T>().ToList();
    }
}

public static T GetSingleOrDefault<T>(Expression<Func<T, bool>> predicate) where T : class
{
    using (var unitOfWork = new UnitOfWork())
    {
        return unitOfWork.context.Set<T>().SingleOrDefault(predicate);
    }
}

请注意,它会跳过存储库。对我来说这没关系,因为存储库中定义的方法更复杂,永远不会直接从前端需要。

我希望这对以后的任何人都有帮助。