代码之家  ›  专栏  ›  技术社区  ›  Piotr

在外墙中引用存储库是正确的吗

  •  1
  • Piotr  · 技术社区  · 13 年前

    谢谢

    1 回复  |  直到 13 年前
        1
  •  2
  •   Daniel    13 年前

    大多数时候我尽量把我的层次分开。通常我会让我的服务充当业务逻辑的门面。在业务逻辑中,我使用一个DI容器(如Unity)来解析我的存储库。。。

    例子:

    IUnityContainer container = IoCManager.Container;
    using (var repository = container.Resolve<IRepository<Token>>())
    {
        return repository.Eagerly(f => f.Fetch<TokenSetting>(t => t.Settings))
                         .Where(t => t.Value == tokenGuid && t.Expired == null)
                         .FirstOrDefault();
    }
    

    我的业务逻辑现在不包含对基础结构层(存储库)的依赖。要获得一个好的存储库实现,请查看ncomon。Ritesh Rao为DDD写了一些模式使用的好例子。

    希望这有帮助。


    存储库可以存在于域内。实际上,它们位于业务逻辑/模型和基础架构模型之间。依赖接口而不是实现是正确的。

    看看马丁·福勒的- Separated Interface Pattern alt text