在Action和它的子Action之间共享数据的推荐方式是什么?



我的预期场景如下:

我的主要动作被称为。它打开一些数据库连接。在这个操作的视图中,我调用了2个子操作。这些操作应该重用已经打开的连接。在控制器的Dispose方法中,我将关闭这些连接。

它不起作用,因为每个子操作都会再次实例化控制器。这样我就不知道如何存储和管理特定于此请求的数据。

我想使用TempData,但它持续到下一个请求。我不确定这是不是一个好的做法。

我该怎么办?

您考虑过使用DI吗?

您可以向IoC容器注册连接,并根据请求指定其生存期。然后将此连接注入到控制器。

关于如何使用MVC框架,我有一些想法。

View ModelInput Model

如果一个视图需要存储在不同位置的大量数据,那么创建一个特定的View Model来聚合它。此技术的要点是确保当控制器返回视图时,不需要返回数据库进行进一步查找。

这也可以应用于传递给控制器动作的模型。Input Model将从UI收集所有细节,以便控制器更新底层域。与View Model一样,Input Model的形状适合视图,然后将其与域关联是控制器的工作。

管理连接

问题没有提到为什么需要重用连接。一般来说,我发现最好不要保持与数据库的连接打开。. net框架在管理连接池方面做得很好。运行查询并尽快关闭连接。如果你使用像NHibernate这样的ORM,那么你必须确保SessionFactory只为应用程序创建一次。这可以通过创建一个单例来实现。

最新更新