Entity framework 领域驱动设计-跨有界上下文共享实体
我是领域驱动设计的新手,并尝试在我的项目中学习和实施。到目前为止,我的项目结构与此类似 维护文件夹Entity framework 领域驱动设计-跨有界上下文共享实体,entity-framework,architecture,domain-driven-design,Entity Framework,Architecture,Domain Driven Design,我是领域驱动设计的新手,并尝试在我的项目中学习和实施。到目前为止,我的项目结构与此类似 维护文件夹维护数据(类 库)维护.域(类库) 维护领域测试(测试项目) MovieBooking文件夹MovieBooking.Data(类 图书馆)MovieBooking.Domain(类库) MovieBooking.Domain.Tests(测试项目) SharedKernel普通事物 Web应用程序电影预订MVC Web 应用程序(参考电影预订域) 在maintenancebounded上下文中,我
维护数据(类 库)
维护.域(类库)
维护领域测试(测试项目)
MovieBooking文件夹
MovieBooking.Data(类 图书馆)
MovieBooking.Domain(类库)
MovieBooking.Domain.Tests(测试项目)
SharedKernel
普通事物
Web应用程序
电影预订MVC Web 应用程序(参考电影预订域) 在
maintenance
bounded上下文中,我在maintenance
DBContext中保留所有CRUD、GetAll类型的内容,例如电影、国家、类别、子类别实体。
现在,在MovieBooking
数据层中,我还需要使用这些实体(主要用于在视图中显示名称或下拉填充,需要的子集类型-不需要所有属性,只需要像Id、name这样的少数属性)
在电影预订环境中,我几乎没有办法访问这些实体
(2) 我必须为每个require表创建视图(只有很少的属性),这将大大增加数据库中的视图数量,因为我有企业级应用程序
我还有别的方法可以做到这一点吗?我在DDD中缺少什么可以寻找的 选项2虽然可以节省您的时间,但从DDD的角度来看,它实际上是一个非常糟糕的主意,因为它允许违反每个聚合要执行的事务边界保证 选项1似乎是一个更好的选项,尽管根据您对建议解决方案的简要描述,仍有相当大的解释余地。如果我理解正确,一般建议如下:
我希望这有帮助。如果我对这个问题理解得不够透彻,请不要犹豫。谢谢您的回复。我打算看看你建议的那本书(橙色)。对于第(2)点——配置数据库集,然后将一个数据库视图(仅包含require字段)映射到数据库集,我已经参考了本文中的参考资料以及pluralsight中的课程:企业中的实体框架这是否与您对选项2的看法相关?如果我们不在同一条道路上,请提出建议。我觉得我有点迷路了,在黑暗中寻找光明:)也许这本书对我来说是一道亮光!!!重点是业务逻辑的隔离,您参考的文章实际上讨论了将大型dbcontext拆分为小型独立的dbcontext,这与我上面的建议完全一致。共享表允许一个BC更改另一个BC的状态,这实际上违反了从另一个BC的聚合中保证事务一致性的可能性。为了进一步解释,您可以共享db(但不是db上下文),并在每个BC中具有单独的db上下文,不同BC中的db上下文将无法访问相同的表。顺便说一句,如果你不做事件源,这是非常好的,但是我发现如果可能的话,最好也隔离db,这有助于独立部署每个服务而不影响其他服务。