2011-12-20 39 views
0

今天,我在我不能确切地解释原因的问题遇到了,所以我觉得更好的是通过计算器分享。ObjectContext的生活范围

好吧,我有.NET实体的MVC 3应用程序,我试图分贝巨大的字符串插入并由此产生一个sqlExeepton“字符串或二进制数据将被截断”。确定到这里,我会在稍后修复它:)。

后这个问题,我试图更新由一个单一的值相同的实体(其实我增加了一个计数器),并再次得到了同样的异常。这可能会有点尴尬。

如果我处置的ObjectContext在每个方法的末尾或者如果我在创建每个方法的问题将得到解决的开始新的ObjectContext。

什么我不明白是怎么做的ObjectContext的反应,如果它的类,而不是一个方法得到初始化提前

​​

感谢

回答

0

怎样的ObjectContext中发生反应,如果它得到在课堂上初始化?

只要控制器类存在,就会有一个实例存在。这将匹配一个http请求的生命周期,这就是编码web应用程序时推荐的生命周期。

所以,你得到的每一个请求一个新的上下文却没有与存储在一个古老的上下文对象有些老态打扰。

+0

我同意这是建议的一生。正如你所说,它为每一个单一的http请求而生存。根据我的理解,如果我打电话给控制器A,它就会初始化。如果我打电话给控制器B,那么控制器A被处置并且控制器B被初始化。如果这是正确的,那么尽管控制器A被处置并重新初始化,为什么我会得到异常呢? – StrouMfios 2011-12-20 08:29:10

+0

*你打电话给控制器B *是什么意思?控制器类被实例化,动作方法通常由框架调用,而不是由您自己调用。你应该确保你使用每个请求的一个datacontext实例。我建议使用一个DI容器,并在您的(基本)控制器类的构造函数中注入实例。 – Jan 2011-12-20 08:47:00

+0

我的意思是,如果我访问我们说的controllerA/index,并在此之后控制器B /索引,然后控制器A将被处置,并且控制器B将被重新初始化。我假设我已经以错误的方式理解了他们。顺便说一下,我将尝试实现DI – StrouMfios 2011-12-20 08:59:10