ObjectDataSource.CacheKeyDependency プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
データ ソース コントロールによって作成されたすべてのデータ キャッシュ オブジェクトにリンクされる、ユーザー定義のキー依存関係を取得または設定します。
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
プロパティ値
ObjectDataSource によって作成されたすべてのキャッシュ オブジェクトを識別するキー。
例
次の 3 つの例は、Web ページ、分離コード ページ クラス、および Northwind データベースの Employees テーブルからレコードを取得するデータ アクセス クラスを示しています。
最初の例は、コントロールとコントロールの 2 つの ObjectDataSource コントロールを DropDownList 含む Web ページを DetailsView 示しています。 最初 ObjectDataSource のコントロールとコントロールは DropDownList 、データベースから従業員名を取得して表示するために使用されます。 2 番目 ObjectDataSource の DetailsView コントロールと コントロールは、ユーザーが選択した従業員レコードを取得して表示するために使用されます。
コントロールに対してキャッシュが ObjectDataSource 有効になっています。 したがって、各レコードはデータベースから 1 回だけ取得されます。 プロパティは CacheKeyDependency "EmployeeDetails" に設定されていますが、任意の文字列値をキーとして機能させることができます。 Web ページには、 Button ユーザーがクリックしてキャッシュされたデータを期限切れにできるコントロールも含まれています。
<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>
2 番目の例は、 イベントの Load ハンドラーと、 コントロールの イベントの Click ハンドラーを Button 示しています。 イベント ハンドラーは Load 、キーが値に設定されたキャッシュ項目を CacheKeyDependency 作成します。 イベント ハンドラーは Click 、キーが 値と等しいキャッシュ項目を CacheKeyDependency 削除します。 キャッシュ項目が削除されると、キーに依存するすべてのキャッシュデータの有効期限が切れています。
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
3 番目の例は、Northwind データベースと対話するデータ アクセス クラスを示しています。 クラスは LINQ を使用して Employees テーブルのクエリを実行します。 この例では、Northwind データベースと Employees テーブルを表す LINQ to SQL クラスが必要です。 詳細については、「 方法: Web プロジェクトで LINQ to SQL クラスを作成する」を参照してください。
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
注釈
プロパティは CacheKeyDependency 任意の文字列値に設定できます。
キーの有効期限が切れると、すべてのキャッシュ オブジェクトが明示的に期限切れになります。 これにより、 によって作成されたキャッシュ エントリをプログラムで独自の ObjectDataSource ページ コードから無効にできます。
コントロールでは ObjectDataSource 、データ キャッシュがサポートされています。 データがキャッシュされている間、 メソッドの Select 呼び出しは、 が処理するビジネス オブジェクトからではなく、キャッシュからデータを ObjectDataSource 取得します。 キャッシュの有効期限が切れると、 メソッドは Select ビジネス オブジェクトからデータを取得し、データをもう一度キャッシュします。
コントロールはObjectDataSource、 プロパティが にtrue
設定されCacheDuration、 プロパティが 0 より大きい値に設定されるとEnableCaching、データを自動的にキャッシュします。これは、キャッシュ エントリが破棄されるまでにキャッシュがデータを格納する秒数を示します。 値 0 は、無限に長いキャッシュを示します。
プロパティを CacheKeyDependency 設定して、コントロールによって作成されたすべてのキャッシュ エントリとキーの間に依存関係を ObjectDataSource 作成できます。 キーの有効期限を切ることで、プログラムですべてのキャッシュ エントリをいつでも期限切れにできます。 パラメーターとして現在CacheKeyDependencyの値を持つ メソッドをCache.Remove使用して、キーを期限切れにします。
、および の各プロパティの組み合わせごとに、一意のCacheDurationSelectMethodCacheExpirationPolicyTypeNameキャッシュ エントリがSelectParameters作成されます。 複数 ObjectDataSource のコントロールは、同じ型、メソッド、およびパラメーターを使用してデータを読み込むシナリオで、同じキャッシュ エントリを使用できます。
適用対象
こちらもご覧ください
.NET