ObjectDataSource.CacheKeyDependency Właściwość

Definicja

Pobiera lub ustawia zależność klucza zdefiniowanego przez użytkownika, która jest połączona z wszystkimi obiektami pamięci podręcznej danych utworzonymi przez kontrolę źródła danych.

C#
public virtual string CacheKeyDependency { get; set; }

Wartość właściwości

Klucz identyfikujący wszystkie obiekty pamięci podręcznej utworzone przez ObjectDataSourceobiekt .

Przykłady

W poniższych trzech przykładach pokazano stronę sieci Web, klasę stron za kodem oraz klasę dostępu do danych, która pobiera rekordy z tabeli Employees w bazie danych Northwind.

W pierwszym przykładzie przedstawiono stronę sieci Web zawierającą dwie ObjectDataSource kontrolki, kontrolkę DropDownList i kontrolkę DetailsView . Pierwsza ObjectDataSource kontrolka i kontrolka DropDownList służą do pobierania i wyświetlania nazw pracowników z bazy danych. Druga ObjectDataSource kontrolka i kontrolka DetailsView są używane do pobierania i wyświetlania rekordu pracownika wybranego przez użytkownika.

Buforowanie jest włączone dla kontrolki ObjectDataSource . W związku z tym każdy rekord jest pobierany tylko raz z bazy danych. Właściwość jest ustawiona CacheKeyDependency na wartość "EmployeeDetails", ale dowolna wartość ciągu może działać jako klucz. Strona sieci Web zawiera również kontrolkę Button , którą użytkownik może kliknąć, aby wygasnąć buforowane dane.

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>

W drugim przykładzie pokazano procedurę obsługi dla Load zdarzenia i procedurę obsługi Click zdarzenia kontrolki Button . Procedura Load obsługi zdarzeń tworzy element pamięci podręcznej z kluczem ustawionym CacheKeyDependency na wartość. Procedura Click obsługi zdarzeń usuwa element pamięci podręcznej, którego klucz jest równy CacheKeyDependency wartości. Po usunięciu elementu pamięci podręcznej wszystkie buforowane dane zależne od klucza wygasły.

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

Trzeci przykład przedstawia klasę dostępu do danych, która współdziała z bazą danych Northwind. Klasa używa LINQ do wykonywania zapytań względem tabeli Employees. Przykład wymaga klasy LINQ to SQL reprezentującej bazę danych Northwind i tabelę Employees. Aby uzyskać więcej informacji, zobacz How to: Create LINQ to SQL Classes in a Web Project (Instrukcje: tworzenie klas LINQ to SQL w projekcie internetowym).

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

Uwagi

Właściwość CacheKeyDependency można ustawić na dowolną dowolną wartość ciągu.

Wszystkie obiekty pamięci podręcznej są jawnie wygasły po wygaśnięciu klucza. Umożliwia to programowe unieważnianie wpisów pamięci podręcznej utworzonych na ObjectDataSource podstawie własnego kodu strony.

Kontrolka ObjectDataSource obsługuje buforowanie danych. Gdy dane są buforowane, wywołania Select metody pobierają dane z pamięci podręcznej, a nie z obiektu biznesowego, z którego ObjectDataSource działa. Gdy pamięć podręczna wygaśnie, Select metoda pobiera dane z obiektu biznesowego, a następnie ponownie buforuje dane.

Kontrolka ObjectDataSource automatycznie buforuje dane, gdy EnableCaching właściwość jest ustawiona true na , a CacheDuration właściwość jest ustawiona na wartość większą niż 0, co wskazuje liczbę sekund przechowywania danych w pamięci podręcznej przed odrzuceniem wpisu pamięci podręcznej. Wartość 0 wskazuje nieskończonie długą pamięć podręczną.

Właściwość można ustawić CacheKeyDependency tak, aby utworzyć zależność między wszystkimi wpisami pamięci podręcznej utworzonymi przez kontrolkę ObjectDataSource i kluczem. Wszystkie wpisy pamięci podręcznej można wygasać programowo w dowolnym momencie, wygasając klucz. Wygasanie klucza przy użyciu Cache.Remove metody z bieżącą CacheKeyDependency wartością jako parametru.

Unikatowy wpis pamięci podręcznej jest tworzony dla każdej kombinacji CacheDurationwłaściwości , , CacheExpirationPolicyTypeName, SelectMethodi SelectParameters . Wiele ObjectDataSource kontrolek może używać tych samych wpisów pamięci podręcznej w scenariuszach, w których ładują dane przy użyciu tego samego typu, metody i parametrów.

Dotyczy

Produkt Wersje
.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

Zobacz też