我使用的是与NHibernate的ASP.NET MVC2,但我面临一个问题。所有通过NHibernate调用数据库应该在事务中,但是在一些情况下,视图内的代码会启动数据库调用。因此,需要能够在视图渲染后提交事务。ASP.NET MVC:查看后运行代码已呈现(关闭数据库事务)
例如显示用户和他们的用户角色的列表,你可以使用此代码显示用户角色:<%:Model.UserRole.Name%>
这将导致数据库作为的UserRole上一炮打响使用NHibernate代理加载。
您可以在这种情况下热切地获取UserRole来避免这个问题,但有些情况下使用延迟加载会快得多。
无论如何,有没有办法在视图渲染后运行代码?
我真的不明白为什么调用对象模型会击中分贝它击败了MVC的全部目的。你能从你的控制器提供一些代码吗? – 2010-03-31 00:27:14
他是正确的:延迟加载会,但这不是问题,它是一个功能。 – 2010-03-31 00:30:43
即使延迟加载,我觉得我们不应该在View中做任何事情来启动数据库连接。我会考虑改变设计。 – ravi 2010-03-31 03:11:50