Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Proprietà ObjectDataSource.CacheKeyDependency

 

Data di pubblicazione: ottobre 2016

Ottiene o imposta una dipendenza di chiave definita dall'utente che è collegata a tutti i dati di oggetti della cache che vengono creati dal controllo origine dati.

Spazio dei nomi:   System.Web.UI.WebControls
Assembly:  System.Web (in System.Web.dll)

public virtual string CacheKeyDependency { get; set; }

Valore proprietà

Type: System.String

Creare una chiave che identifica tutti gli oggetti della cache per il ObjectDataSource.

Il CacheKeyDependency proprietà può essere impostata su qualsiasi valore stringa arbitraria.

Tutti gli oggetti cache scadono in modo esplicito quando scade la chiave. Ciò consente di invalidare le voci di cache che vengono create il ObjectDataSource dal proprio codice pagina a livello di codice.

Il ObjectDataSource controllo supporta la memorizzazione nella cache di dati. Mentre i dati viene memorizzato nella cache, le chiamate per il Select metodo recuperare dati dalla cache anziché dall'azienda oggetto che il ObjectDataSource funziona con. Quando la cache scade, il Select metodo recupera i dati dall'oggetto business e li memorizza nella cache i dati.

Il ObjectDataSource controllo memorizza automaticamente i dati quando il EnableCaching è impostata su true e CacheDuration proprietà è impostata su un valore maggiore di 0, che indica il numero di secondi che la cache archivia i dati prima che venga eliminata la voce della cache. Il valore 0 indica una cache senza limiti di tempo.

È possibile impostare il CacheKeyDependency proprietà per creare una dipendenza tra tutte le voci di cache che vengono creati il ObjectDataSource controllo e la chiave. È possibile far scadere tutte le voci di cache a livello di codice in qualsiasi momento per la scadenza della chiave. Impostare la scadenza della chiave utilizzando il Cache.Remove metodo con l'oggetto CacheKeyDependency valore come parametro.

Viene creata una voce della cache univoche per ogni combinazione del CacheDuration, CacheExpirationPolicy, TypeName, SelectMethod, e SelectParameters proprietà. Più ObjectDataSource controlli possono utilizzare le stesse voci della cache in scenari in cui caricano dati utilizzando lo stesso tipo, metodo e parametri.

I tre esempi seguenti mostrano una pagina Web, una classe di pagina code-behind e una classe di accesso ai dati che recuperano i record dalla tabella Employees del database Northwind.

Nel primo esempio viene illustrata una pagina Web che contiene due ObjectDataSource controlli, un DropDownList controllo e un DetailsView controllo. Il primo ObjectDataSource controllo e il DropDownList controllo vengono utilizzati per recuperare e visualizzare i nomi dei dipendenti dal database. Il secondo ObjectDataSource controllo e il DetailsView controllo vengono utilizzati per recuperare e visualizzare i record del dipendente selezionato dall'utente.

La memorizzazione nella cache è abilitata per il ObjectDataSource controllo. Pertanto, ogni record viene recuperato dal database una sola volta. Il CacheKeyDependency è impostata su "EmployeeDetails", ma è possibile utilizzare qualsiasi valore stringa come chiave. La pagina Web include inoltre un Button controllo che l'utente può fare clic per far scadere i dati memorizzati nella cache.

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

Nel secondo esempio viene illustrato un gestore per il Load evento e un gestore per il Click evento il Button controllo. Il Load gestore eventi crea un elemento della cache con una chiave impostata il CacheKeyDependency valore. Il Click gestore dell'evento rimuove l'elemento della cache la cui chiave è uguale al CacheKeyDependency valore. Quando l'elemento della cache viene rimosso, tutti i dati memorizzati nella cache dipendente dalla chiave è scaduto.

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

Nel terzo esempio viene illustrata la classe di accesso ai dati che interagisce con il database Northwind. La classe utilizza LINQ per eseguire una query nella tabella Employees. L'esempio richiede una classe LINQ to SQL che rappresenta il database Northwind e la tabella Employees. Per ulteriori informazioni, vedere procedura: creare classi LINQ to SQL in un progetto 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();
    }
}

.NET Framework
Disponibile da 2.0
Torna all'inizio
Mostra: