在Action和它的Child Actions之间共享数据的推荐方法是什么?

时间:2011-10-24 16:41:11

标签: .net asp.net-mvc

我的预期情况如下:

  

我的主要动作是召唤。它会打开一些数据库连接。在这个动作看来,我称之为2个孩子的行为。这些操作应该重用已经打开的连接。在控制器的Dispose方法中,我将关闭这些连接。

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

我想过使用TempData,但它会持续到下一个请求。我不确定这是一个好习惯。

我该怎么办?

2 个答案:

答案 0 :(得分:2)

您是否考虑过使用DI?

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

答案 1 :(得分:0)

关于如何使用MVC框架,我有几点想法。

查看模型\输入模型

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

这也可以应用于传递给控制器​​动作的模型。 Input Model将收集UI中的所有详细信息,以便控制器更新基础域。与View Model一样,Input Model处于适合视图的形状,然后控制器作业将其与域相关联。

管理连接

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