none
Usando Cache no MVC RRS feed

  • Pergunta

  • Senhores,

    Qual seria a melhor maneira de fazer algo parecido no mvc?

    protected void Page_Load(Object src, EventArgs e) 
    { 
     DataView dv = (DataView)Cache.Get("EmployeesDataView");
     
    if (dv == null) { // wasn't there
     SqlConnection conn = new SqlConnection("server=localhost;uid=sa;pwd=;database=Test");
     SqlDataAdapter da = new SqlDataAdapter("select * from Employees", conn);
     DataSet ds = new DataSet();
     da.Fill(ds, "Employees");
     dv = ds.Tables["Employees"].DefaultView;
     Cache.Insert("EmployeesDataView", dv);
     conn.Close();
    }
    else
     Response.Write("<h2>Loaded employees from data cache!</h2>");
     lb1.DataSource = dv;
     lb1.DataTextField = "Name";
     lb1.DataValueField = "Age";
     DataBind();
    }
    }

    Estou perguntando isso pq quero armazenar em cache alguns resultados de tabelas como tipo, status que não sofrem muita alteração. No caso do MVC tentei usar o mesmo objeto de cache, mas não existe uma propriedade Cache associada ao controller como acontece com o objeto Page do webForms e vi também que existe o [OutputCache], mas acho que não me atende.

    Aceito sugestões :)

    segunda-feira, 25 de outubro de 2010 18:44

Respostas

  • Fala,

    Você pode usar System.Web.HttpContext.Current.Cache no Controller normalmente, ou então usar o Caching Application Block da Enterprise Library.

    Só tome cuidado com a testabilidade do seu Controller , o ideal seria encapsular as funcionalidades relacionadas a Cache para que você possa "mockar" o seu Cache. Tem um exemplo aqui , só pra você ter uma idéia.

     


    Forte abraço,

    André Borges Medeiros
    MCT, MCPD, MCTS

    >> Se a resposta solucionar sua dúvida, favor Votar como Útil
    • Marcado como Resposta ceabarros terça-feira, 26 de outubro de 2010 13:00
    terça-feira, 26 de outubro de 2010 12:43
    Moderador