我的理解是,在每个Web请求期间都不会调用控制器的构造函数.假设这是真的,控制器的生命周期是什么?是应用程序启动时"构造",然后使用每个Web请求注入的requestcontext进行缓存和调用吗?
为了清楚起见,我不是在问如何模拟构造函数行为,我使用OnActionExecuting事件来启动我通常在构造函数中执行的操作.另外,我确实在控制器上使用构造函数进行单元和系统测试.
谢谢!
我需要在单个事务中更新我的数据库中的几个表,并且我认为使用DbContext.SaveChanges应该是这样做的方法.
但是我还读到,它的生命周期DbContext应该尽可能短,因为它会随着时间的推移而增加,因为它会加载更多的实体.
我还读到,为了使其成为线程安全的,每个动作都应该有自己的DbContext.
我应该有一个DbContext,因为我想改变,并呼吁每个表SaveChanges上的每一个DbContext?最后一次SaveChanges通话是否会覆盖之前通话的更改?
最好的方法是什么?(我需要这个网站)
根据这个答案,ASP.NET MVC创建了一个控制器类的新实例来响应每个请求.
我的问题是,控制器实例什么时候被销毁?
到目前为止,我一直在假设(可能不正确)这些实例在每个响应结束时被销毁,但是一些数据库池问题让我认为它们可能留给了垃圾收集器.有没有人对此有任何见解?
我想知道.NET MVC Core的Controller类是否默认为Singleton?
如果不是,那么框架是否会为每个请求创建多个 Controller 类对象?创建此类类的新实例不是一种开销和成本更高吗?
在 Java 等其他编程语言中,仅创建一个控制器类实例 (Servlet),并且每个请求都由一个新线程处理。.Net 中不是很相似吗?