ObjectDataSource.CacheKeyDependency Tulajdonság
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Lekéri vagy beállít egy felhasználó által definiált kulcsfüggőséget, amely az adatforrás-vezérlő által létrehozott összes adatgyorsítótár-objektumhoz kapcsolódik.
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
Tulajdonság értéke
A kulcs, amely azonosítja az összes gyorsítótár-objektumot, amelyet a ObjectDataSource.
Példák
Az alábbi három példa egy weblapot, egy kód mögötti laposztályt és egy adatelérési osztályt mutat be, amely rekordokat kér le a Northwind-adatbázis Alkalmazottak táblájából.
Az első példa egy weblapot mutat be, amely két ObjectDataSource vezérlőt, egy vezérlőt DropDownList és egy vezérlőt DetailsView tartalmaz. Az első ObjectDataSource vezérlő és a DropDownList vezérlő az alkalmazottak nevét kéri le és jeleníti meg az adatbázisból. A második ObjectDataSource vezérlő és a DetailsView vezérlő a felhasználó által kiválasztott alkalmazotti rekord lekérésére és megjelenítésére szolgál.
A vezérlő gyorsítótárazása engedélyezve ObjectDataSource van. Ezért minden rekord csak egyszer lesz lekérve az adatbázisból. A CacheKeyDependency tulajdonság "EmployeeDetails" értékre van állítva, de bármely sztringérték kulcsként működhet. A weblap egy vezérlőt Button is tartalmaz, amellyel a felhasználó rákattinthat a gyorsítótárazott adatok lejáratához.
<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>
A második példa az Load esemény kezelője és a Click vezérlő eseményének kezelője Button . Az Load eseménykezelő létrehoz egy gyorsítótár-elemet az értékre CacheKeyDependency beállított kulccsal. Az Click eseménykezelő eltávolítja azt a gyorsítótárelemet, amelynek a kulcsa megegyezik az CacheKeyDependency értékkel. A gyorsítótárelem eltávolításakor a kulcstól függő összes gyorsítótárazott adat lejárt.
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
A harmadik példa a Northwind-adatbázissal interakcióba lépő adatelérési osztályt mutatja be. Az osztály a LINQ használatával kérdezi le az Alkalmazottak táblát. A példához linq to SQL osztály szükséges, amely a Northwind adatbázist és az Alkalmazottak táblát jelöli. További információ: Hogyan is: LINQ létrehozása SQL-osztályokhoz webes Project.
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
Megjegyzések
A CacheKeyDependency tulajdonság tetszőleges sztringértékre állítható be.
A kulcs lejártával minden gyorsítótár-objektum kifejezetten lejárt. Ez lehetővé teszi a saját oldalkódból programozott módon létrehozott ObjectDataSource gyorsítótár-bejegyzések érvénytelenítését.
A ObjectDataSource vezérlő támogatja az adatok gyorsítótárazását. Miközben az adatok gyorsítótárazva lesznek, a Select metódus hívásai a gyorsítótárból kérik le az adatokat, nem pedig abból az üzleti objektumból, amellyel a ObjectDataSource rendszer dolgozik. Amikor a gyorsítótár lejár, a Select metódus lekéri az adatokat az üzleti objektumból, majd újra gyorsítótárazza az adatokat.
A ObjectDataSource vezérlő automatikusan gyorsítótárazza az adatokat a EnableCaching tulajdonság beállításakor true , és a CacheDuration tulajdonság értéke 0-nál nagyobb, ami azt jelzi, hogy a gyorsítótár hány másodpercig tárolja az adatokat a gyorsítótár bejegyzésének elvetése előtt. A 0 érték végtelenül hosszú gyorsítótárat jelöl.
A tulajdonságot úgy is beállíthatja CacheKeyDependency , hogy függőséget hozzon létre a vezérlő és a ObjectDataSource kulcs által létrehozott összes gyorsítótár-bejegyzés között. A kulcs lejáratával az összes gyorsítótár-bejegyzést programozott módon bármikor le lehet járni. A kulcs lejáratához használja a metódust az Cache.Remove aktuális CacheKeyDependency értékkel paraméterként.
Létrejön egy egyedi gyorsítótárbejegyzés a CacheDuration, CacheExpirationPolicy, , TypeNameSelectMethodés SelectParameters tulajdonságok minden kombinációjához. Több ObjectDataSource vezérlő is használhatja ugyanazokat a gyorsítótárbejegyzéseket olyan helyzetekben, amikor ugyanazzal a típussal, módszerrel és paraméterekkel töltik be az adatokat.