我的问题是我必须以某种方式处理数据库在我的MVC应用程序中关闭的情况。那么,我是否应该try{} catch{}
在每个控制器中打开连接?或者最佳做法是什么?
注意: 对于示例数据库访问,在少数“管理器”类中被隔离,这些类以工作存储库的方式。
答案 0 :(得分:4)
为什么要在每个控制器中打开连接。这应该在它自己的可重用类中被隔离。
您可能需要查看存储库模式以实现数据访问。
答案 1 :(得分:3)
如果您没有数据库连接,那么在生产数据库驱动的Web应用程序中,通常这意味着发生的事情远远超出了应用程序的范围。关于你唯一能做的就是给用户一个友好的错误信息,告诉负责修理的人。这是您的全局错误处理的任务,而不是每个控制器。
答案 2 :(得分:2)
好吧,首先,如果你在每个控制器中都有一个单独的数据库处理例程,我会先将它组合成一个基类或一个可重用的成员。
之后,您应该能够使用ASP.NET MVC的[HandleError]
属性来指定如何处理数据库中的错误。