2011-12-20 47 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