- 我正在使用asp.net mvc 3,具有IoC結構映射的實體框架。
- 我有我自己的自定義會員供應商。
- 當我使用StructureMap注入dbcontext對象和成員資格實例時,我遇到了同樣的問題,因此我的UserRepository已將其刪除。
- UserRepository現在具有在構造函數中初始化的DBContext屬性。
每次創建/更新新用戶(執行此操作的方法都將dbcontext對象封裝在using語句中)時,下次引用dbcontext時,會拋出ObjectDisposedException。ObjectDisposedException每次拋出「用戶」(成員資格)對象時拋出
我不明白我在做什麼錯。顯然,成員資格提供程序類在每次需要時都不會實例化userRepository對象,並且在更新用戶時由於using語句而放棄上下文。但我認爲這是標準做法?
任何幫助,非常感謝。
編輯:
真的沒有複雜的代碼。設置是:
CustomMembershipProvider覆蓋標準的成員資格提供者(配置文件已獲得詳細信息)。 CustomMembershipProvider使用IUserService對象,該對象使用由UserRepository實現的IUserRepository,該類在類級別具有DBContext專用對象。
在UserRepository,我有:
public void UpdateUser(User user)
{
using(_db)
{
... code to indicate that the user state has changed
_db.SaveChanges();
}
}
一旦運行這些代碼,請求完成。但是當另一個請求檢索角色信息或從數據庫讀取用戶時(在UserRepository類中),我得到拋出的ObjectDisposedException。此時沒有任何與用戶或角色相關的作品,因爲它們使用的是相同的UserRepository類,其_db變量已由UpdateUser處置。
我最初有StructureMap解決DBContext對象,customMembership對象等,但必須從StructureMap的映射中刪除它。
可以顯示用於連接依賴項的代碼和引發異常的代碼嗎? – Bassetassen