作爲新來的實體框架,我真的很困擾如何處理這組問題。在我目前正在進行的項目中,整個網站與EF模型大量集成。首先,使用依賴注入引導程序來控制對EF上下文的訪問。出於操作原因,我們無法使用DI庫。我刪除了它,並根據需要使用了上下文對象的單個實例的模型。我開始得到以下例外:.NET實體框架和事務
類型'XXX'已被映射多次。
我們得出的結論是上下文的不同實例導致了這個問題。然後我將上下文對象抽象爲每個線程/頁面正在訪問的單個靜態實例。我現在得到幾個有關交易的例外之一:
新事務是不允許的,因爲會話中有其他線程正在運行 。
事務操作無法執行,因爲有 掛起的請求處理此事務。
當分配給命令的 連接處於未決的本地事務中時,ExecuteReader需要該命令進行事務。 命令的Transaction屬性尚未初始化。
這些異常中的最後一個發生在加載操作上。我沒有試圖在失敗的線程上將上下文狀態保存回Db。還有另一個線程正在執行這樣的操作。
這些例外是最好的,但我設法讓網站進入新的連接被拒絕的狀態,由於交易鎖定。不幸的是我找不到例外細節。
我想我的第一個問題是,如果從靜態單個實例使用EF模型?另外,是否可以刪除EF中的事務處理?我一直在使用,但沒有成功TransactionScope
對象試過......
說實話我很多困在這裏,並不能明白爲什麼(應該是什麼)相當簡單的操作,造成這樣的問題...
相關:http://stackoverflow.com/questions/10585478/one-dbcontext-per-web-request-why – Steven 2012-09-13 09:29:39
這太糟糕了,你不能使用IOC引導程序,因爲解決方案與[Ninject](http ://www.ninject.org/)將是一個 「普通的」 實例綁定到_request scope_,如其他人建議:'kernel.Bind>()爲了>( ).InRequestScope();' - 是**'InRequestScope' ** –
drzaus
2013-07-03 13:56:52