我一直在开发ASP.NET MVC应用程序已有一段时间了。在我的所有项目中,我只有一个数据上下文,但我遇到了一些项目,它们为不同的实体使用不同的数据上下文。我想不出任何使用它。据我所知,它们在不同的事务中工作,因此当CRUD操作抛出异常时,无法进行过去CRUD操作的回滚,因为它们将在那时提交。
我认为应该使用不同上下文的唯一情况是,当您需要分离事务范围或处理多个数据库时。所以我的问题是:
1)为不同的实体提供不同的数据上下文的逻辑是什么?
2)你什么时候使用不同的数据上下文?
答案 0 :(得分:0)
一个是ReadOnly /轻量级访问,另一个是完整的访问,带有它附带的所有好东西。
但当然,不同的数据上下文通常意味着不同的数据库。
答案 1 :(得分:0)
如果您拥有一个大型项目,尤其是多个开发人员所使用的项目,那么拥有不同的数据上下文通常会更容易。它们只能包含特定功能集所需的实体。
例如,如果您暂时将购物车数据持久保存到数据库,则只需要购物车对象(购物车项目列表,愿望清单等),您不需要客户管理,订单履行中涉及的所有对象,发送给客户的电子邮件等。
如果开发人员在项目的不同部分工作,这也会变得更容易。他们都可以编辑他们的特定数据上下文而不会与其他人混淆。当尝试使用SVN合并数据时,这非常方便。