ObjectDataSource.CacheKeyDependency Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendapatkan atau mengatur dependensi kunci yang ditentukan pengguna yang ditautkan ke semua objek cache data yang dibuat oleh kontrol sumber data.
public:
virtual property System::String ^ CacheKeyDependency { System::String ^ get(); void set(System::String ^ value); };
public virtual string CacheKeyDependency { get; set; }
member this.CacheKeyDependency : string with get, set
Public Overridable Property CacheKeyDependency As String
Nilai Properti
Kunci yang mengidentifikasi semua objek cache yang dibuat oleh ObjectDataSource.
Contoh
Tiga contoh berikut ini memperlihatkan halaman Web, kelas halaman di belakang kode, dan kelas akses data yang mengambil rekaman dari tabel Karyawan di database Northwind.
Contoh pertama memperlihatkan halaman Web yang berisi dua ObjectDataSource kontrol, DropDownList kontrol, dan DetailsView kontrol. Kontrol pertama ObjectDataSource dan DropDownList kontrol digunakan untuk mengambil dan menampilkan nama karyawan dari database. Kontrol kedua ObjectDataSource dan DetailsView kontrol digunakan untuk mengambil dan menampilkan rekaman karyawan yang dipilih oleh pengguna.
Penembolokan diaktifkan untuk ObjectDataSource kontrol. Oleh karena itu, setiap rekaman hanya diambil satu kali dari database. Properti CacheKeyDependency diatur ke "EmployeeDetails", tetapi nilai string apa pun dapat berfungsi sebagai kunci. Halaman Web juga menyertakan Button kontrol yang dapat diklik pengguna untuk kedaluwarsa data yang di-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>
<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>
Contoh kedua menunjukkan handler untuk Load peristiwa dan handler untuk Click peristiwa Button kontrol. Penanganan Load aktivitas membuat item cache dengan kunci yang diatur ke CacheKeyDependency nilai . Penanganan Click aktivitas menghapus item cache yang kuncinya sama dengan CacheKeyDependency nilai. Saat item cache dihapus, semua data cache yang bergantung pada kunci kedaluwarsa.
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();
}
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
If Not (IsPostBack) Then
Cache(ObjectDataSource2.CacheKeyDependency) = "CacheExample"
End If
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
Cache.Remove(ObjectDataSource2.CacheKeyDependency)
Cache(ObjectDataSource2.CacheKeyDependency) = "CacheExample"
DetailsView1.DataBind()
End Sub
Contoh ketiga menunjukkan kelas akses data yang berinteraksi dengan database Northwind. Kelas menggunakan LINQ untuk mengkueri tabel Karyawan. Contohnya memerlukan kelas LINQ ke SQL yang mewakili database Northwind dan tabel Karyawan. Untuk informasi selengkapnya, lihat Cara: Membuat LINQ ke Kelas SQL di Proyek 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();
}
}
Public Class EmployeeLogic
Public Shared Function GetFullNamesAndIDs() As Array
Dim ndc As New NorthwindDataContext()
Dim employeeQuery = _
From e In ndc.Employees _
Order By e.LastName _
Select FullName = e.FirstName + " " + e.LastName, EmployeeID = e.EmployeeID
Return employeeQuery.ToArray()
End Function
Public Shared Function GetEmployee(ByVal empID As Integer) As Employee
If (empID < 0) Then
Return Nothing
Else
Dim ndc As New NorthwindDataContext()
Dim employeeQuery = _
From e In ndc.Employees _
Where e.EmployeeID = empID _
Select e
Return employeeQuery.Single()
End If
End Function
Public Shared Sub UpdateEmployeeAddress(ByVal originalEmployee As Employee, ByVal address As String, ByVal city As String, ByVal postalcode As String)
Dim ndc As New NorthwindDataContext()
ndc.Employees.Attach(originalEmployee, False)
originalEmployee.Address = address
originalEmployee.City = city
originalEmployee.PostalCode = postalcode
ndc.SubmitChanges()
End Sub
End Class
Keterangan
Properti CacheKeyDependency dapat diatur ke nilai string arbitrer apa pun.
Semua objek cache secara eksplisit kedaluwarsa saat kunci kedaluwarsa. Ini memungkinkan Anda untuk membatalkan entri cache yang dibuat oleh ObjectDataSource dari kode halaman Anda sendiri secara terprogram.
Kontrol ObjectDataSource mendukung penembolokan data. Saat data di-cache, panggilan ke Select metode mengambil data dari cache daripada dari objek bisnis yang ObjectDataSource bekerja dengannya. Ketika cache kedaluwarsa, Select metode mengambil data dari objek bisnis, lalu cache data lagi.
Kontrol ObjectDataSource secara otomatis menyimpan data saat EnableCaching properti diatur ke true
dan CacheDuration properti diatur ke nilai yang lebih besar dari 0, yang menunjukkan jumlah detik cache menyimpan data sebelum entri cache dibuang. Nilai 0 menunjukkan cache yang sangat panjang.
Anda dapat mengatur CacheKeyDependency properti untuk membuat dependensi antara semua entri cache yang dibuat oleh ObjectDataSource kontrol dan kunci. Anda dapat kedaluwarsa semua entri cache secara terprogram kapan saja dengan kedaluwarsa kunci. Kedaluwarsa kunci dengan menggunakan Cache.Remove metode dengan nilai saat ini CacheKeyDependency sebagai parameter .
Entri cache unik dibuat untuk setiap kombinasi CacheDurationproperti , , CacheExpirationPolicyTypeName, SelectMethod, dan SelectParameters . Beberapa ObjectDataSource kontrol dapat menggunakan entri cache yang sama dalam skenario di mana mereka memuat data menggunakan jenis, metode, dan parameter yang sama.
Berlaku untuk
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk