0

我正在开发一个 MVC 5 互联网应用程序,我有一个关于DbContextcontroller.

我的DbContext班级有许多DbSet不同模型实体的对象。我的模型实体都没有使用虚拟对象,但是,我的视图模型在每个控制器中都使用虚拟对象。

当一个控制器DbSet在同一个控制器/动作结果中引用不同的对象时,我应该DbContext为每个不同的DbSet引用使用不同的实例吗?当我尝试在仅使用一个实例时访问不同DbSets的视图模型以创建视图模型时,我在 Web 服务类中遇到了以下错误:DbContext

Message = "已经有一个打开的 DataReader 与此命令关联,必须先关闭。"

DbSets当使用相同的DbContext类 访问不同的对象时,在 MVC 控制器中对对象执行 CRUD 操作时会发生这种情况吗?

这是一个例子:

我有一个MapLocationList控制器,在创建/编辑MapLocationList对象时,会访问以下不同的DbSet对象:Asset, MapLocation.

在 MVC 控制器中使用多个DbContext实例时,开销会增加多少?

基本上,我的问题是在访问不同的控制器/动作结果DbContext时是否应该使用不同的实例?DbSets

提前致谢。

4

1 回答 1

0

您不需要在控制器中使用不同的 DBContext 实例来访问不同的 DBSet。(最佳实践是在请求期间使用相同的实例,这可能会访问一个或多个 DBSet。这可以通过依赖注入或其他方式来完成,例如您的控制器具有 DBContext 类的成员变量并处理它处理控制器时亮起)。只要您正确处理 dbcontext 实例,在控制器中多次使用同一个实例就可以了。您的问题是您没有启用 MultipleActiveResultSets (MARS)。在您的连接字符串中,插入以下内容

MultipleActiveResultSets=True

更多关于 MARS 的信息可以在这里找到

于 2014-12-15T06:10:49.200 回答