我刚刚观看了Julie Lermans关于在EF中使用有界上下文的视频(http://www.pluralsight.com/training/Courses/TableOfContents/efarchitecture),现在我正试图找出最佳实施方式(使用POCO)。我看到的两个选择是要么有一个定义所有内容的edmx模型,然后手动创建DbContext来包含适当的实体,或者为每个上下文创建单独的edmx模型并使用自动创建的DbContext。实体框架体系结构中的有界(Db)上下文
有没有人有任何想法,哪一个是最好的或任何优点/缺点?
恕我直言: 对于单个模型来说,它少了很多类并且有更多的代码重用(尽管这些类是自动创建的,所以它只会是手动复制的额外功能),但是我将在一个地方有很多课程,对于需要专业化的课程,每个课程都必须有不同的名称。例如。 Customer,CustomerForFunctionalityX,CustomerForFunctionalityB。
对于不同的模型,我可以对上下文的内容更加严格,因为删除属性并不需要是一个全新的实体,我可以根据需要命名一切(即所有模型都可以使用客户对象即使在模型之间有所不同),但是现在每个上下文都具有完全不同的实体,即使它们全都映射到同一个表 - 这也可能使它们在上下文之间传递它们变得更加困难(但是这不应该需要否则就意味着上下文被定义为错误)。
为什么不使用工作单元模式创建仅显示给定团队将使用的实体的工作单元?如果所有团队都在使用同一个数据库,那么实际上应该只有一个管理数据库的核心团队。有限的上下文似乎与代码一起解决了一个问题,最好的解决方法是团队结构,IMO。 – Maess
当然,添加UOW模式可能会有所帮助,我喜欢UOW模式,尽管它可能会增加复杂性。我喜欢单独的edmxs的主要原因是一个大的edmx可能会变得无法管理,并且还会创建有界的edmxs,以确保数据库开发人员可以确切地看到哪些实体属于某个上下文,而不必为一个UOW在一个中创建定制实体模型 - 在包括数据库模型在内的整个模型中进行分离是很好的。 – user1671016