Exportar (0) Imprimir
Expandir todo

ObjectDataSource.CacheKeyDependency (Propiedad)

Actualización: noviembre 2007

Obtiene o establece una dependencia de clave definida por el usuario que está vinculada a todos los objetos de caché de datos creados por el control de origen de datos.

Espacio de nombres:  System.Web.UI.WebControls
Ensamblado:  System.Web (en System.Web.dll)

public virtual string CacheKeyDependency { get; set; }
/** @property */
public String get_CacheKeyDependency()
/** @property */
public  void set_CacheKeyDependency(String value)

public function get CacheKeyDependency () : String
public function set CacheKeyDependency (value : String)
<asp:ObjectDataSource CacheKeyDependency="String" />

Valor de propiedad

Tipo: System.String
Clave que identifica todos los objetos de caché creados por ObjectDataSource.

La propiedad CacheKeyDependency puede establecerse en un valor de cadena arbitrario.

Todos los objetos de caché expiran explícitamente cuando vence la clave. Esto permite invalidar entradas de caché creadas por ObjectDataSource a partir del código de su propia página mediante programación.

El control ObjectDataSource admite el almacenamiento de datos en caché. Mientras los datos están almacenados en la caché, las llamadas al método Select recuperan los datos de la caché, y no del objeto comercial con el que trabaja ObjectDataSource. Cuando la caché expira, el método Select recupera los datos del objeto comercial y después almacena otra vez los datos en memoria caché.

El control ObjectDataSource almacena los datos en memoria caché automáticamente cuando la propiedad EnableCaching está establecida en true y la propiedad CacheDuration está establecida en un valor mayor que 0, que indica el número de segundos durante los cuales la memoria caché almacena datos antes de que se descarte la entrada de caché. Un valor de 0 indica una caché infinitamente larga.

Puede establecer la propiedad CacheKeyDependency de forma que se cree una dependencia entre todas las entradas de la caché creadas por el control ObjectDataSource y la clave. Mediante programación, puede hacer que expiren en cualquier momento todas las entradas almacenadas en caché sólo con hacer que expire la clave. Haga que expire la clave utilizando el método Cache.Remove con el valor CacheKeyDependency actual como parámetro.

Se crea una entrada de caché única para cada combinación de las propiedades CacheDuration, CacheExpirationPolicy, TypeName, SelectMethod y SelectParameters. Varios controles ObjectDataSource pueden utilizar las mismas entradas de caché en escenarios donde cargan datos con el mismo tipo, método y parámetros.

En los tres ejemplos siguientes se muestran una página web, una clase de página de código subyacente y una clase de acceso a datos que recuperan datos de la tabla Employees en la base de datos Northwind.

En el primer ejemplo se muestra una página web que contiene dos controles ObjectDataSource, un control DropDownList y un control DetailsView. El primer control ObjectDataSource y el control DropDownList se utilizan para recuperar y mostrar los nombres de empleados de la base de datos. El segundo control ObjectDataSource y el control DetailsView se utilizan para recuperar y mostrar el registro de empleado seleccionado por el usuario.

El almacenamiento en memoria caché está habilitado para el control ObjectDataSource. Por consiguiente, cada registro se recupera solamente una vez de la base de datos. La propiedad CacheKeyDependency está establecida en "EmployeeDetails", pero cualquier valor de cadena puede funcionar como clave. La página web también incluye un control Button en el que el usuario puede hacer clic para que expiren los datos almacenados en caché.

<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>


En el segundo ejemplo se muestra un controlador para el evento Load y un controlador para el evento Click del control Button. El controlador de eventos Load crea un elemento de caché con una clave establecida en el valor de CacheKeyDependency. El controlador de eventos Click quita el elemento en caché cuya clave es igual al valor de CacheKeyDependency. Cuando se quita el elemento en caché, se expiran todos los datos almacenados en caché que dependen de la clave.

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();
}


En el tercer ejemplo se muestra la clase de acceso a datos que interactúa con la base de datos Northwind. La clase utiliza LINQ para consultar la tabla Employees. El ejemplo requiere una clase LINQ to SQL que represente la base de datos Northwind y la tabla Employees. Para obtener más información, vea Cómo: Crear clases de LINQ to SQL en una aplicación web.

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();
    }
}


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft