gpt4 book ai didi

c# - 我应该把我的存储库放在哪一层?

转载 作者:太空狗 更新时间:2023-10-29 20:11:52 25 4
gpt4 key购买 nike

场景

数据访问层

  • >EF 生成的 .edmx 和类
  • >仅用于访问 SQL 数据库并将数据转发给业务层

业务层

  • >业务实体:包含所有验证逻辑,用 [DataContract] 属性标记,以便它们可以作为参数传递到我的网络服务

问题

我想通过这种方法使用存储库模式。存储库将包含要在数据库上执行的所有 CRUD 操作,接受和返回业务层实体。这意味着存储库将驻留在业务层,因为只有业务层才能引用数据层,反之则不行。我还计划在其他项目中使用数据层程序集,这就是为什么我希望在数据层而不是业务层(该项目特别适用)中拥有存储库。
你有什么建议吗?我应该将存储库保留在业务层 并为每个不同的业务层编写一个吗?或者我应该将存储库保留在数据层中,而不是接受或返回业务实体。
或者,作为替代方案,任何人都可以推荐一种不同的方法,以产生更合乎逻辑、可扩展的架构吗?

感谢阅读,期待答案

最佳答案

存储库是对数据层的抽象 - 为您的应用程序提供持久性无知。它应该只处理数据访问,仅此而已。它不应该有任何业务逻辑。

存储库可以而且应该接受并返回 DTO(数据传输对象)——这些是简单的对象,它们没有自己的行为,用于在层之间传输数据。

我会把它放在 DAL 和 BLL 之间,并且只将它用于 BLL 的数据访问。

关于c# - 我应该把我的存储库放在哪一层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3599541/

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