2013-02-05 44 views
0

我需要在會話/緩存中存儲用戶設置(如地址,訪問權等),以便通過基本控制器(MVC項目)訪問它們。如何從實體中刪除代理

當我嘗試從會話達到User.Address如可以想像它說:

的ObjectContext的實例已設置,並且可以不再爲需要連接的操作中使用 。

地址是用戶實體上的導航屬性。

我不想用DTO。

有沒有解決方法?

謝謝。

+0

地址是一種lazzy載入屬性?如果會話上下文將丟失dbContext,則應該加載它們全部。 –

+0

是的,地址是一個延遲加載屬性。 – shortcode

+0

標題和問題之間的關係是什麼? :) –

回答

1

我同意格特,但我更喜歡這樣寫。 (用於編譯時錯誤檢查)

public User GetUser(int userId) 
{ 
    using (var db = new MyContext()) 
    { 
     return db.Users.Include(p => p.Address).Single(u => u == userId); 
    } 
} 
0

當您從數據庫中提取用戶時,您必須使用Include的地址。例如,像這樣的東西(存儲庫或服務):

public User GetUser(int userId) 
{ 
    using (var db = new MyContext()) 
    { 
     return db.Users.Include("Address").Single(u => u == userId); 
    } 
}