ObjectDataSource.EnableCaching Propriedade

Definição

Obtém ou define um valor que indica se o controle ObjectDataSource tem o cache de dados habilitado.

C#
public virtual bool EnableCaching { get; set; }

Valor da propriedade

true se o cache de dados estiver habilitado para o controle de fonte de dados; caso contrário, false. O padrão é false.

Exceções

A propriedade EnableCaching é definida como true quando o método especificado pela propriedade SelectMethod retorna um DbDataReader.

Exemplos

Os três exemplos a seguir mostram uma página da Web, uma classe de página code-behind e uma classe de acesso a dados que recuperam registros da tabela Employees no banco de dados Northwind.

O primeiro exemplo mostra uma página da Web que contém dois ObjectDataSource controles, um DropDownList controle e um DetailsView controle. O primeiro ObjectDataSource controle e o DropDownList controle são usados para recuperar e exibir nomes de funcionários do banco de dados. O segundo ObjectDataSource controle e o DetailsView controle são usados para recuperar e exibir o registro do funcionário selecionado pelo usuário.

O cache está habilitado para o ObjectDataSource controle . Portanto, cada registro é recuperado apenas uma vez do banco de dados. A CacheKeyDependency propriedade é definida como "EmployeeDetails", mas qualquer valor de cadeia de caracteres pode funcionar como a chave. A página da Web também inclui um Button controle que o usuário pode clicar para expirar os dados armazenados em cache.

ASP.NET (C#)
<form id="form1" runat="server">
<div>
<asp:objectdatasource
      ID="ObjectDataSource1"
      runat="server"
      SelectMethod="GetFullNamesAndIDs"
      TypeName="Samples.AspNet.CS.EmployeeLogic" />
      
    <p>
    <asp:dropdownlist
      ID="DropDownList1"
      runat="server" 
      DataSourceID="ObjectDataSource1"
      DataTextField="FullName"
      DataValueField="EmployeeID" 
      AutoPostBack="True" 
      AppendDataBoundItems="true">
        <asp:ListItem Text="Select One" Value=""></asp:ListItem>
    </asp:dropdownlist>
    </p>
    
 <asp:objectdatasource
      ID="ObjectDataSource2"
      runat="server"
      SelectMethod="GetEmployee"
      TypeName="Samples.AspNet.CS.EmployeeLogic" 
      EnableCaching="true"
      CacheKeyDependency="EmployeeDetails" >
      <SelectParameters>
        <asp:ControlParameter ControlID="DropDownList1" DefaultValue="-1" Name="empID" />
      </SelectParameters>
    </asp:objectdatasource>
    
    <asp:DetailsView
        ID="DetailsView1"
        runat="server"
        DataSourceID="ObjectDataSource2" 
        AutoGenerateRows="false">  
        <Fields>
            <asp:BoundField HeaderText="Address" DataField="Address" />
            <asp:BoundField HeaderText="City" DataField="City" />
            <asp:BoundField HeaderText="Postal Code" DataField="PostalCode" />
        </Fields>  
    </asp:DetailsView>
    
    <asp:Button 
    ID="Button1" 
    runat="server" 
    Text="Check for latest data" 
    OnClick="Button1_Click" />
    
</div>
</form>

O segundo exemplo mostra um manipulador para o Load evento e um manipulador para o Click evento do Button controle. O Load manipulador de eventos cria um item de cache com uma chave definida como o CacheKeyDependency valor. O Click manipulador de eventos remove o item de cache cuja chave é igual ao CacheKeyDependency valor . Quando o item de cache é removido, todos os dados armazenados em cache que dependem da chave expiram.

C#
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Cache[ObjectDataSource2.CacheKeyDependency] = "CacheExample";
    }
}
protected void Button1_Click(object sender, EventArgs e)
{
    Cache.Remove(ObjectDataSource2.CacheKeyDependency);
    Cache[ObjectDataSource2.CacheKeyDependency] = "CacheExample";
    DetailsView1.DataBind();
}

O terceiro exemplo mostra a classe de acesso a dados que interage com o banco de dados Northwind. A classe usa LINQ para consultar a tabela Funcionários. O exemplo requer uma classe LINQ to SQL que representa o banco de dados Northwind e a tabela Employees. Para obter mais informações, consulte Como criar classes LINQ to SQL em um projeto Web.

C#
public class EmployeeLogic
{
    public static Array GetFullNamesAndIDs()
    {
        NorthwindDataContext ndc = new NorthwindDataContext();

        var employeeQuery =
            from e in ndc.Employees
            orderby e.LastName
            select new { FullName = e.FirstName + " " + e.LastName, EmployeeID = e.EmployeeID };

        return employeeQuery.ToArray();
    }

    public static Employee GetEmployee(int empID)
    {
        if (empID < 0)
        {
            return null;
        }
        else
        {
            NorthwindDataContext ndc = new NorthwindDataContext();
            var employeeQuery =
                from e in ndc.Employees
                where e.EmployeeID == empID
                select e;

            return employeeQuery.Single();
        }
    }
 
    public static void UpdateEmployeeAddress(Employee originalEmployee, string address, string city, string postalcode)
    {
        NorthwindDataContext ndc = new NorthwindDataContext();
        ndc.Employees.Attach(originalEmployee, false);
        originalEmployee.Address = address;
        originalEmployee.City = city;
        originalEmployee.PostalCode = postalcode;
        ndc.SubmitChanges();
    }
}

Comentários

O controle dá suporte ao ObjectDataSource cache de dados. Enquanto os dados são armazenados em cache, as chamadas para o Select método recuperam dados do cache em vez de ObjectDataSource criar uma instância do objeto de negócios e chamar seu método de dados. Quando o cache expira, o Select método recupera dados do objeto de negócios e armazena os dados em cache novamente.

O ObjectDataSource controle armazena automaticamente em cache os dados quando a EnableCaching propriedade é definida true como e a CacheDuration propriedade é definida como um valor maior que 0, o que indica o número de segundos que o cache armazena dados antes que a entrada de cache seja descartada. Um valor 0 indica um cache infinitamente longo.

Aplica-se a

Produto Versões
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

Confira também