4

将解决方案分解为多个项目时,拥有多个数据上下文或共享上下文是否有意义?

例如,对于一个门户网站,您有:

App.Service1
App.Service2
App.Web (references Service1 and Service2)

现在你想让 Service1 和 Service2 共享相同的 DataContext 还是它们都有自己的?

请记住,两者Service1Service2连接到完全相同的数据库,它们只是分开以使事情更加孤立。

我正在使用 EF6。

4

4 回答 4

3

最好共享相同的上下文。当您聚合来自不同数据库的数据时,多个上下文是有意义的。

于 2013-10-29T14:10:11.877 回答
1

一般来说,为了简单起见,我建议您使用一个上下文,但是如果您的数据模型(上下文)非常大,那么如果您使用多个上下文,您可能会获得更好的性能。但只有当您的实体没有关系时才有意义。并且可能难以处理许多上下文。

于 2013-10-29T14:18:35.483 回答
1

我将主要使用单个上下文,因为如果两个上下文位于同一数据库上,它将阻止实体框架与迁移或架构更改检测混淆

如果分离是一个问题并且您的设计允许这样做,我会让上下文实现两个接口,即 Service1 和 Service2 的逻辑拆分,并在整个代码中使用这些接口。

还值得注意的是,您不能在导航属性方面存在跨上下文关系,但这在您的情况下听起来不是问题

于 2013-10-29T14:15:03.177 回答
0

我个人认为在同一个数据库中拥有两个数据上下文是没有用的。我看到您隔离事物的想法,但我认为 EF 足够强大,不会这样做。正如@Darin 所说,我为不同的数据库使用了两个上下文。

于 2013-10-29T14:14:50.070 回答