2013-10-10 19 views
2

我一直在开发ASP.NET MVC应用程序很长一段时间了。在我的所有项目中,我只有一个数据上下文,但是我遇到一些项目为不同的实体使用不同的数据上下文。我想不出有什么用处。据我所知,他们在不同的事务中工作,以便当CRUD操作抛出异常时,过去的CRUD操作无法进行回滚,因为当时他们会犯下这些操作。何时使用不同的DataContext

我认为应该使用不同上下文的唯一情况是当您需要分隔事务范围或处理多个数据库时。所以我的问题是:

1)什么是不同的实体有不同的数据上下文的逻辑?

2)您何时使用不同的数据上下文?

+0

这太宽泛了,无法回答,因为可能有各种原因这样做。你不能要求显示这种行为的项目的创建者? – CodeCaster

+1

使用DDD限制上下文缩小EF模型:http://msdn.microsoft.com/en-us/magazine/jj883952.aspx – Colin

+0

@Colin +1 Nice方法 – sotn

回答

0

如果您有一个大型项目,尤其是由多个开发人员开发的项目,那么拥有不同的数据上下文通常更容易。它们只能包含您需要用于特定功能集的实体。

例如,如果您要将购物车数据临时保存到数据库中,则只需购物车对象(购物车项目列表,愿望清单等),而不需要客户管理中涉及的所有对象,订单履行,发送给客户的电子邮件等。

如果您有开发人员在项目的不同部分工作,这也使得更容易。他们都可以编辑他们特定的数据上下文,而不会与其他人混淆。当尝试使用SVN合并数据时,这非常方便。

+0

我不会使用不同的数据上下文来分隔业务逻辑,创建数据上下文是便宜的,除非你有成千上万的实体,但我有背后有多个数据上下文的原因,谢谢.. – sotn

0

一个用于ReadOnly /轻量级访问,另一个用于全面访问所有与它一起出现的好东西。

但是当然,不同的数据上下文通常意味着不同的DB。