2016-12-02 82 views
0

我將在我的數據庫中使用多次集合,我想將它存儲在Session變量中,因此我不需要每次都讀取數據庫我希望有權訪問該集合(如果您有更好的主意,而不是使用會話變量,則接受建議)。在Asp.Net MVC中,它非常容易,只需將集合分配給變量,但在ASP.net Core MVC中,即使我使用.net框架是不同的,我在Startup.cs中做了需要的配置目前,問題是,會議在ASP.net Core僅實施了這些方法(這是從here採取爲例):在會話中存儲集合Asp.net Core .net Framework

public IActionResult Index() 
{ 
    HttpContext.Session.SetString("Name", "Mike"); 
    HttpContext.Session.SetInt32("Age", 21); 
    return View(); 
} 

他們show you如何實現一個擴展方法來存儲boolean類型的例子一個Session變量。但是如果我想存儲一個集合呢?我怎麼能這樣做?比方說,我有一個表叫Person與像nameage等領域,我想存儲在會話變量Person對象的集合,我怎麼能做到這一點?

+0

您是否考慮使用Cache來存儲這些信息? – Shyju

+0

@Shyju我怎麼能使用緩存? – AlexGH

+0

您是否需要「存儲」每個用戶或每個整個應用程序? – Dmitry

回答

2

整個應用程序的緩存(對所有用戶相同的值)使用高速緩存,例如MemoryCaching

0

如果你想存儲在會話複雜的對象,那麼你可以不喜歡這個 -

public static class SessionExtensions 
{ 
    public static void SetObjectAsJson(this ISession session, string key, object value) 
    { 
     session.SetString(key, JsonConvert.SerializeObject(value)); 
    } 

    public static T GetObjectFromJson<T>(this ISession session, string key) 
    { 
     var value = session.GetString(key); 

     return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value); 
    } 
} 

要存儲複雜的對象,你可以不喜歡這個 -

var obj= new ComplexClass(); 
HttpContext.Session.SetObjectAsJson("SessionVariable1", obj); 

並回讀像這個 -

var obj= HttpContext.Session.GetObjectFromJson<ComplexClass>("SessionVariable1"); 

看看這是否有幫助。