scr*_*pni 7 c# design-patterns repository
[DataContract]属性标记,以便它们可以作为参数传递给我的Web服务
我想用这种方法使用存储库模式.存储库将包含要对数据库执行的所有CRUD操作,接受和返回业务层实体.这意味着存储库将驻留在业务层中,因为只有业务层可以引用数据层,而不是相反.我还计划在其他项目中使用数据层程序集,这就是为什么我希望在数据层中拥有存储库,而不是业务层(这是该项目特有的).
您有什么推荐的吗?我应该将存储库保留在业务层中,并为每个不同的业务层编写一个存储库吗?或者我应该将存储库保留在数据层内,而不是接受或返回业务实体.
或者,作为替代方案,任何人都可以推荐不同的方法,这将产生更具逻辑性,可扩展的架构吗?
感谢阅读,等待答案
存储库是数据层的抽象 - 为您的应用程序提供持久性无知.它应该只处理数据访问,仅此而已.它不应该有任何业务逻辑.
存储库可以并且应该接受并返回DTO(数据传输对象) - 这些是简单对象,它们没有自己的行为,用于在层之间传输数据.
我会把它之间的DAL和BLL,只用它来从BLL的数据访问.
我喜欢接受的答案。理想情况下,拥有一个专门用于存储库的完整层听起来是正确的。
但我认为,在传统的三层应用程序(例如“数据->业务->UI”)中,我会将存储库放在数据层中。我将它们放在数据层的原因是因为它们严格处理数据访问。我不会将它们放入业务层的原因是因为它们不应该有任何业务逻辑。