gpt4 book ai didi

c# - 如何避免循环依赖 : DAL. DbContext.DbSet

转载 作者:太空宇宙 更新时间:2023-11-03 21:48:01 25 4
gpt4 key购买 nike

如果 DbContext 在 DAL 中,则 DbSet 的通用类型参数不能是 BLL 类(域模型)。分离这些层的最佳实践方法是什么? DAL 中的额外模型?接口(interface)?

最佳答案

如果您正在执行 DDD,我相信存储库(至少是它的接口(interface))是您的业务/领域层的一部分。您对存储库的实现将是一个单独的程序集,它必须引用该业务/领域层。因此,您的 DAL 知道您的业务对象,但反之则不然。要进行依赖项注入(inject),您可能会在 DAL 层中配置容器以将 Repository 用于 IRepository 接口(interface)。如果您需要一个工作单元模式,您的界面也可能必须是业务层的一部分。同样,您的实现将在您的 DAL 中,并且 DAL 将适本地配置 DI 容器。这实际上是我不喜欢存储库模式的原因之一,因为您要么需要确保您的界面用户正确管理 IUnitOfWork,要么您需要一些东西来包装存储库。

在传统的 n 层架构中,情况有些不同。在那种情况下,您的业务层可以与 DAL 对话,我通常将 DAL 构建为具有代表数据库中一行数据的 DTO。然后,业务层将使用这些 DTO 来组合业务对象(或者如果您使用的是 CSLA.Net 之类的东西,则业务对象知道如何组合自己)。

无论哪种方式,都不应该出现循环引用的情况。

关于c# - 如何避免循环依赖 : DAL. DbContext.DbSet<BLL.Model>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15933839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com