场景
数据访问层
- > EF 生成的 .edmx 和类
- > 仅用于访问 SQL 数据库并将数据转发给业务层
业务层
- >
业务实体:包含所有验证逻辑,用
[DataContract]
属性标记,以便它们可以作为参数传递到我的网络服务
问题
我想通过这种方法使用存储库模式。存储库将包含要在数据库上执行的所有 CRUD 操作,接受和返回业务层实体。这意味着存储库将驻留在业务层,因为只有业务层才能引用数据层,反之则不行。我还计划在其他项目中使用数据层程序集,这就是为什么我希望在数据层而不是业务层(该项目特别适用)中拥有存储库。
你有什么建议吗?我应该将存储库保留在业务层 并为每个不同的业务层编写一个吗?或者我应该将存储库保留在数据层中,而不是接受或返回业务实体。
或者,作为替代方案,任何人都可以推荐一种不同的方法,以产生更合乎逻辑、可扩展的架构吗?
感谢阅读,期待答案
最佳答案
存储库是对数据层的抽象 - 为您的应用程序提供持久性无知。它应该只处理数据访问,仅此而已。它不应该有任何业务逻辑。
存储库可以而且应该接受并返回 DTO(数据传输对象)——这些是简单的对象,它们没有自己的行为,用于在层之间传输数据。
我会把它放在 DAL 和 BLL 之间,并且只将它用于 BLL 的数据访问。
关于c# - 我应该把我的存储库放在哪一层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3599541/