ObjectDataSource.SqlCacheDependency プロパティ
アセンブリ: System.Web (system.web.dll 内)

Dim instance As ObjectDataSource Dim value As String value = instance.SqlCacheDependency instance.SqlCacheDependency = value
/** @property */ public String get_SqlCacheDependency () /** @property */ public void set_SqlCacheDependency (String value)
public function get SqlCacheDependency () : String public function set SqlCacheDependency (value : String)
SQL Server キャッシュの依存関係で使用するデータベースとテーブルを示す文字列。

ObjectDataSource コントロールは、データ キャッシュの SqlCacheDependency オブジェクトに基づいたオプションの有効期限ポリシーをサポートしています (データベース サーバーでサービスが構成されている必要があります)。
SQL Server は、キャッシュの無効化について、ポーリングと通知の 2 つの機構をサポートしています。各機構では、SqlCacheDependency オブジェクトの異なる構文を使用します。
ObjectDataSource は、ポーリングだけをサポートしています。SqlCacheDependency 文字列を使用して、Select メソッドが実行される前に DbCommand コンストラクタに渡される SqlDependency オブジェクトを作成します。SqlCacheDependency 文字列は、@ Page ディレクティブが使用する形式と同じ形式に従って、データベースとテーブルを識別します。この形式では、文字列の最初の部分が SQL Server データベースへの接続文字列で、その後に区切り記号としてコロンを使用し、最後がデータベース テーブルの名前になります (例 : "connectionstring1:table1")。SqlCacheDependency プロパティが複数のテーブルに依存している場合、接続文字列とテーブル名のペアはセミコロンで区切られます (例 : "connectionstring1:table1";connectionstring2:table2")。
通知をサポートするには、SelectMethod メソッドの実装にキャッシュ論理を記述し、コードで SqlCacheDependency オブジェクトの構築を処理します。

このセクションには、2 つのコード例が含まれています。1 つ目のコード例では、SQL Server キャッシュの依存関係を作成し、ObjectDataSource オブジェクトの SqlCacheDependency プロパティを設定する方法を示します。2 つ目のコード例では、DataSet オブジェクトを返すラッパー メソッドを実装し、ObjectDataSource オブジェクトでキャッシュとフィルタ処理を有効にする方法を示します。
SQL Server キャッシュの依存関係を作成し、ObjectDataSource コントロールの SqlCacheDependency プロパティを設定する方法を次のコード例に示します。この例では、データベースは 120 秒おきにポーリングされます。その間に Northwind Traders Employees テーブルのデータが変更されると、ObjectDataSource コントロールでキャッシュされ、GridView コントロールで表示されたすべてのデータは期限切れとなり、ページに対する次回の要求時にデータの新しいセットが取得されます。
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB" Assembly="Samples.AspNet.VB" %> <%@ Page language="vb" %> <!-- The page uses an example configuration that includes connection strings and a defined SqlCacheDependecy. <?xml version="1.0"?> <configuration> <connectionStrings> <add name="MyNorthwind" connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind" providerName="System.Data.SqlClient" /> </connectionStrings> <system.web> <cache> <sqlCacheDependency enabled="true"> <databases> <add name="Northwind" connectionStringName="MyNorthwind" pollTime="120000" /> </databases> </sqlCacheDependency> </cache> </system.web> </configuration> --> <html> <head> <title>ObjectDataSource - VB Example</title> </head> <body> <form id="Form1" method="post" runat="server"> <asp:gridview id="GridView1" runat="server" datasourceid="ObjectDataSource1" /> <asp:objectdatasource id="ObjectDataSource1" runat="server" typename="Samples.AspNet.VB.EmployeeLogic" selectmethod="GetAllEmployeesAsDataSet" enablecaching="True" cacheduration="300" cacheexpirationpolicy="Absolute" sqlcachedependency="Northwind:Employees" /> </form> </body> </html>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" Assembly="Samples.AspNet.CS" %> <%@ Page language="c#" %> <!-- The page uses an example configuration that includes connection strings and a defined SqlCacheDependecy. <?xml version="1.0"?> <configuration> <connectionStrings> <add name="MyNorthwind" connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind" providerName="System.Data.SqlClient" /> </connectionStrings> <system.web> <cache> <sqlCacheDependency enabled="true"> <databases> <add name="Northwind" connectionStringName="MyNorthwind" pollTime="120000" /> </databases> </sqlCacheDependency> </cache> </system.web> </configuration> --> <html> <head> <title>ObjectDataSource - C# Example</title> </head> <body> <form id="Form1" method="post" runat="server"> <asp:gridview id="GridView1" runat="server" datasourceid="ObjectDataSource1" /> <asp:objectdatasource id="ObjectDataSource1" runat="server" typename="Samples.AspNet.CS.EmployeeLogic" selectmethod="GetAllEmployeesAsDataSet" enablecaching="True" cacheduration="300" cacheexpirationpolicy="Absolute" sqlcachedependency="Northwind:Employees" /> </form> </body> </html>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.JSL" Assembly="Samples.AspNet.JSL" %> <%@ Page language="VJ#" %> <!-- The page uses an example configuration that includes connection strings and a defined SqlCacheDependecy. <?xml version="1.0"?> <configuration> <connectionStrings> <add name = "NorthwindConnection" connectionString = "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind" /> </connectionStrings> <system.web> ... <cache> <sqlCacheDependency enabled="true"> <databases> <add name="Northwind_Remote" connectionStringName="NorthwindConnection" pollTime="120000" /> </databases> </sqlCacheDependency> </cache> </system.web> </configuration> --> <html> <head> <title>ObjectDataSource - VJ# Example</title> </head> <body> <form id="Form1" method="post" runat="server"> <asp:gridview id="GridView1" runat="server" datasourceid="ObjectDataSource1" /> <asp:objectdatasource id="ObjectDataSource1" runat="server" typename="Samples.AspNet.JSL.EmployeeLogic" selectmethod="GetAllEmployeesAsDataSet" enablecaching="True" cacheduration="300" cacheexpirationpolicy="Absolute" sqlcachedependency="Northwind_Remote:Employees" /> </form> </body> </html>
DataSet オブジェクトを返すラッパー メソッドを実装し、ObjectDataSource コントロールでキャッシュとフィルタ処理を有効にする方法を次のコード例に示します。EmployeeLogic クラスの基本実装では、GetAllEmployees メソッドは ArrayList オブジェクトを返します。Web フォーム ページの ObjectDataSource を使用するためにオブジェクトを完全にリファクタする代わりに、一連の NorthwindEmployee データを DataSet として返す GetAllEmployeesAsDataSet という名前のラッパー メソッドが追加されています。
Imports System Imports System.Collections Imports System.Configuration Imports System.Data Imports System.Data.SqlClient Imports System.Web.UI Imports System.Web.UI.WebControls Namespace Samples.AspNet.VB ' EmployeeLogic is a stateless business object that encapsulates ' the operations one can perform on a NorthwindEmployee object. ' Public Class EmployeeLogic ' Returns a collection of NorthwindEmployee objects. Public Shared Function GetAllEmployees() As ICollection Dim al As New ArrayList() Dim cts As ConnectionStringSettings = ConfigurationManager.ConnectionStrings("NorthwindConnection") Dim sds As New SqlDataSource(cts.ConnectionString, "SELECT EmployeeID FROM Employees") Try Dim IDs As IEnumerable = sds.Select(DataSourceSelectArguments.Empty) ' Iterate through the Enumeration and create a ' NorthwindEmployee object for each ID. Dim enumerator As IEnumerator = IDs.GetEnumerator() While enumerator.MoveNext() ' The IEnumerable contains DataRowView objects. Dim row As DataRowView = CType(enumerator.Current ,DataRowView) Dim id As String = row("EmployeeID").ToString() Dim nwe As New NorthwindEmployee(id) ' Add the NorthwindEmployee object to the collection. al.Add(nwe) End While Finally ' If anything strange happens, clean up. sds.Dispose() End Try Return al End Function 'GetAllEmployees ' To support basic filtering, the employees cannot ' be returned as an array of objects, rather as a ' DataSet of the raw data values. Public Shared Function GetAllEmployeesAsDataSet() As DataSet Dim employees As ICollection = GetAllEmployees() Dim ds As New DataSet("Table") ' Create the schema of the DataTable. Dim dt As New DataTable() Dim dc As DataColumn dc = New DataColumn("FirstName", GetType(String)) dt.Columns.Add(dc) dc = New DataColumn("LastName", GetType(String)) dt.Columns.Add(dc) dc = New DataColumn("Title", GetType(String)) dt.Columns.Add(dc) dc = New DataColumn("Courtesy", GetType(String)) dt.Columns.Add(dc) dc = New DataColumn("Supervisor", GetType(Int32)) dt.Columns.Add(dc) ' Add rows to the DataTable. Dim emplEnum As IEnumerator = employees.GetEnumerator() Dim row As DataRow Dim ne As NorthwindEmployee While emplEnum.MoveNext() ne = CType(emplEnum.Current, NorthwindEmployee) row = dt.NewRow() row("FirstName") = ne.FirstName row("LastName") = ne.LastName row("Title") = ne.Title row("Courtesy") = ne.Courtesy row("Supervisor") = ne.Supervisor dt.Rows.Add(row) End While ' Add the complete DataTable to the DataSet. ds.Tables.Add(dt) Return ds End Function 'GetAllEmployeesAsDataSet Public Shared Function GetEmployee(anID As Object) As NorthwindEmployee If anID.Equals("-1") OrElse anID.Equals(DBNull.Value) Then Return New NorthwindEmployee() Else Return New NorthwindEmployee(anID) End If End Function 'GetEmployee Public Shared Sub UpdateEmployeeInfo(ne As NorthwindEmployee) Dim retval As Boolean = ne.Save() If Not retval Then Throw New NorthwindDataException("UpdateEmployee failed.") End If End Sub 'UpdateEmployeeInfo Public Shared Sub DeleteEmployee(ne As NorthwindEmployee) Dim retval As Boolean = ne.Delete() If Not retval Then Throw New NorthwindDataException("DeleteEmployee failed.") End If End Sub 'DeleteEmployee End Class 'EmployeeLogic Public Class NorthwindEmployee Public Sub New() ID = DBNull.Value aLastName = "" aFirstName = "" aTitle = "" titleOfCourtesy = "" reportsTo = - 1 End Sub 'New Public Sub New(anID As Object) Me.ID = anID Dim cts As ConnectionStringSettings = ConfigurationManager.ConnectionStrings("NorthwindConnection") Dim conn As New SqlConnection(cts.ConnectionString) Dim sc As New SqlCommand(" SELECT FirstName,LastName,Title,TitleOfCourtesy,ReportsTo " & _ " FROM Employees " & _ " WHERE EmployeeID = @empId", conn) ' Add the employee ID parameter and set its value. sc.Parameters.Add(New SqlParameter("@empId", SqlDbType.Int)).Value = Int32.Parse(anID.ToString()) Dim sdr As SqlDataReader = Nothing Try conn.Open() sdr = sc.ExecuteReader() ' Only loop once. If Not (sdr Is Nothing) AndAlso sdr.Read() Then ' The IEnumerable contains DataRowView objects. Me.aFirstName = sdr("FirstName").ToString() Me.aLastName = sdr("LastName").ToString() Me.aTitle = sdr("Title").ToString() Me.titleOfCourtesy = sdr("TitleOfCourtesy").ToString() If Not sdr.IsDBNull(4) Then Me.reportsTo = sdr.GetInt32(4) End If Else Throw New NorthwindDataException("Data not loaded for employee id.") End If Finally Try If Not (sdr Is Nothing) Then sdr.Close() End If conn.Close() Catch se As SqlException ' Log an event in the Application Event Log. Throw End Try End Try End Sub 'New Private ID As Object Public ReadOnly Property EmpID() As String Get Return ID.ToString() End Get End Property Private aLastName As String Public Property LastName() As String Get Return aLastName End Get Set aLastName = value End Set End Property Private aFirstName As String Public Property FirstName() As String Get Return aFirstName End Get Set aFirstName = value End Set End Property Public ReadOnly Property FullName() As String Get Return FirstName & " " & LastName End Get End Property Private aTitle As String Public Property Title() As String Get Return aTitle End Get Set aTitle = value End Set End Property Private titleOfCourtesy As String Public Property Courtesy() As String Get Return titleOfCourtesy End Get Set titleOfCourtesy = value End Set End Property Private reportsTo As Integer Public Property Supervisor() As Integer Get Return reportsTo End Get Set reportsTo = value End Set End Property Public Function Save() As Boolean ' Implement persistence logic. Return True End Function 'Save Public Function Delete() As Boolean ' Implement delete logic. Return True End Function 'Delete End Class 'NorthwindEmployee Friend Class NorthwindDataException Inherits Exception Public Sub New(msg As String) MyBase.New(msg) End Sub 'New End Class 'NorthwindDataException End Namespace
namespace Samples.AspNet.CS { using System; using System.Collections; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Web.UI; using System.Web.UI.WebControls; // // EmployeeLogic is a stateless business object that encapsulates // the operations one can perform on a NorthwindEmployee object. // public class EmployeeLogic { // Returns a collection of NorthwindEmployee objects. public static ICollection GetAllEmployees () { ArrayList al = new ArrayList(); ConnectionStringSettings cts = ConfigurationManager.ConnectionStrings["NorthwindConnection"]; SqlDataSource sds = new SqlDataSource(cts.ConnectionString, "SELECT EmployeeID FROM Employees"); try { IEnumerable IDs = sds.Select(DataSourceSelectArguments.Empty); // Iterate through the Enumeration and create a // NorthwindEmployee object for each ID. IEnumerator enumerator = IDs.GetEnumerator(); while (enumerator.MoveNext()) { // The IEnumerable contains DataRowView objects. DataRowView row = enumerator.Current as DataRowView; string id = row["EmployeeID"].ToString(); NorthwindEmployee nwe = new NorthwindEmployee(id); // Add the NorthwindEmployee object to the collection. al.Add(nwe); } } finally { // If anything strange happens, clean up. sds.Dispose(); } return al; } // // To support basic filtering, the employees cannot // be returned as an array of objects, rather as a // DataSet of the raw data values. public static DataSet GetAllEmployeesAsDataSet () { ICollection employees = GetAllEmployees(); DataSet ds = new DataSet("Table"); // Create the schema of the DataTable. DataTable dt = new DataTable(); DataColumn dc; dc = new DataColumn("FirstName", typeof(string)); dt.Columns.Add(dc); dc = new DataColumn("LastName", typeof(string)); dt.Columns.Add(dc); dc = new DataColumn("Title", typeof(string)); dt.Columns.Add(dc); dc = new DataColumn("Courtesy", typeof(string)); dt.Columns.Add(dc); dc = new DataColumn("Supervisor",typeof(Int32)); dt.Columns.Add(dc); // Add rows to the DataTable. IEnumerator emplEnum = employees.GetEnumerator(); DataRow row; NorthwindEmployee ne; while (emplEnum.MoveNext()) { ne = emplEnum.Current as NorthwindEmployee; row = dt.NewRow(); row["FirstName"] = ne.FirstName; row["LastName"] = ne.LastName; row["Title"] = ne.Title; row["Courtesy"] = ne.Courtesy; row["Supervisor"] = ne.Supervisor; dt.Rows.Add(row); } // Add the complete DataTable to the DataSet. ds.Tables.Add(dt); return ds; } public static NorthwindEmployee GetEmployee(object anID) { if (anID.Equals("-1") || anID.Equals(DBNull.Value) ) { return new NorthwindEmployee(); } else { return new NorthwindEmployee(anID); } } public static void UpdateEmployeeInfo(NorthwindEmployee ne) { bool retval = ne.Save(); if (! retval) { throw new NorthwindDataException("UpdateEmployee failed."); } } public static void DeleteEmployee(NorthwindEmployee ne) { bool retval = ne.Delete(); if (! retval) { throw new NorthwindDataException("DeleteEmployee failed."); } } } public class NorthwindEmployee { public NorthwindEmployee () { ID = DBNull.Value; lastName = ""; firstName = ""; title=""; titleOfCourtesy = ""; reportsTo = -1; } public NorthwindEmployee (object anID) { this.ID = anID; SqlConnection conn = new SqlConnection (ConfigurationManager.ConnectionStrings["NorthwindConnection"].ConnectionString); SqlCommand sc = new SqlCommand(" SELECT FirstName,LastName,Title,TitleOfCourtesy,ReportsTo " + " FROM Employees " + " WHERE EmployeeID = @empId", conn); // Add the employee ID parameter and set its value. sc.Parameters.Add(new SqlParameter("@empId",SqlDbType.Int)).Value = Int32.Parse(anID.ToString()); SqlDataReader sdr = null; try { conn.Open(); sdr = sc.ExecuteReader(); // Only loop once. if (sdr != null && sdr.Read()) { // The IEnumerable contains DataRowView objects. this.firstName = sdr["FirstName"].ToString(); this.lastName = sdr["LastName"].ToString(); this.title = sdr["Title"].ToString(); this.titleOfCourtesy = sdr["TitleOfCourtesy"].ToString(); if (! sdr.IsDBNull(4)) { this.reportsTo = sdr.GetInt32(4); } } else { throw new NorthwindDataException("Data not loaded for employee id."); } } finally { try { if (sdr != null) sdr.Close(); conn.Close(); } catch (SqlException) { // Log an event in the Application Event Log. throw; } } } private object ID; public string EmpID { get { return ID.ToString(); } } private string lastName; public string LastName { get { return lastName; } set { lastName = value; } } private string firstName; public string FirstName { get { return firstName; } set { firstName = value; } } public string FullName { get { return FirstName + " " + LastName; } } private string title; public String Title { get { return title; } set { title = value; } } private string titleOfCourtesy; public string Courtesy { get { return titleOfCourtesy; } set { titleOfCourtesy = value; } } private int reportsTo; public int Supervisor { get { return reportsTo; } set { reportsTo = value; } } public bool Save () { // Implement persistence logic. return true; } public bool Delete () { // Implement delete logic. return true; } } internal class NorthwindDataException: Exception { public NorthwindDataException(string msg) : base (msg) { } } }
package Samples.AspNet.JSL; import System.*; import System.Collections.*; import System.Configuration.*; import System.Data.*; import System.Data.SqlClient.*; import System.Web.UI.*; import System.Web.UI.WebControls.*; // // EmployeeLogic is a stateless business object that encapsulates // the operations one can perform on a NorthwindEmployee object. // public class EmployeeLogic { // Returns a collection of NorthwindEmployee objects. public static ICollection GetAllEmployees() throws NorthwindDataException { ArrayList al = new ArrayList(); ConnectionStringSettings cts = ConfigurationManager.get_ConnectionStrings().get_Item("NorthwindConnection"); SqlDataSource sds = new SqlDataSource(cts.get_ConnectionString() , "SELECT EmployeeID FROM Employees"); try { IEnumerable ids = sds.Select(DataSourceSelectArguments.get_Empty()); // Iterate through the Enumeration and create a // NorthwindEmployee object for each ID. IEnumerator enumerator = ids.GetEnumerator(); while (enumerator.MoveNext()) { // The IEnumerable contains DataRowView objects. DataRowView row = (DataRowView)enumerator.get_Current(); String idObj = row.get_Item("EmployeeID").ToString(); NorthwindEmployee nwe = new NorthwindEmployee(idObj); // Add the NorthwindEmployee object to the collection. al.Add(nwe); } } finally { // If anything strange happens, clean up. sds.Dispose(); } return al; } //GetAllEmployees // // To support basic filtering, the employees cannot // be returned as an array of objects, rather as a // DataSet of the raw data values. public static DataSet GetAllEmployeesAsDataSet() throws NorthwindDataException { ICollection employees = GetAllEmployees(); DataSet ds = new DataSet("Table"); // Create the schema of the DataTable. DataTable dt = new DataTable(); DataColumn dc; dc = new DataColumn("FirstName", String.class.ToType()); dt.get_Columns().Add(dc); dc = new DataColumn("LastName", String.class.ToType()); dt.get_Columns().Add(dc); dc = new DataColumn("Title", String.class.ToType()); dt.get_Columns().Add(dc); dc = new DataColumn("Courtesy", String.class.ToType()); dt.get_Columns().Add(dc); dc = new DataColumn("Supervisor", Int32.class.ToType()); dt.get_Columns().Add(dc); // Add rows to the DataTable. IEnumerator emplEnum = employees.GetEnumerator(); DataRow row; NorthwindEmployee ne; while (emplEnum.MoveNext()) { ne = (NorthwindEmployee)emplEnum.get_Current(); row = dt.NewRow(); row.set_Item("FirstName", ne.get_FirstName()); row.set_Item("LastName", ne.get_LastName()); row.set_Item("Title", ne.get_Title()); row.set_Item("Courtesy", ne.get_Courtesy()); row.set_Item("Supervisor", (Int32)ne.get_Supervisor()); dt.get_Rows().Add(row); } // Add the complete DataTable to the DataSet. ds.get_Tables().Add(dt); return ds; } //GetAllEmployeesAsDataSet public static NorthwindEmployee GetEmployee(Object anID) throws NorthwindDataException { if (anID.Equals("-1") || anID.Equals(DBNull.Value)) { return new NorthwindEmployee(); } else { return new NorthwindEmployee(anID); } } //GetEmployee public static void UpdateEmployeeInfo(NorthwindEmployee ne) throws NorthwindDataException { boolean retVal = ne.Save(); if (!(retVal)) { throw new NorthwindDataException("UpdateEmployee failed."); } } //UpdateEmployeeInfo public static void DeleteEmployee(NorthwindEmployee ne) throws NorthwindDataException { boolean retVal = ne.Delete(); if (!(retVal)) { throw new NorthwindDataException("DeleteEmployee failed."); } } //DeleteEmployee } //EmployeeLogic public class NorthwindEmployee { public NorthwindEmployee() { id = DBNull.Value; lastName = ""; firstName = ""; title = ""; titleOfCourtesy = ""; reportsTo = -1; } //NorthwindEmployee public NorthwindEmployee(Object anID) throws NorthwindDataException { this.id = anID; SqlConnection conn = new SqlConnection(ConfigurationManager. get_ConnectionStrings().get_Item("NorthwindConnection"). get_ConnectionString()); SqlCommand sc = new SqlCommand(" SELECT FirstName ,LastName,Title," + "TitleOfCourtesy,ReportsTo " + " FROM Employees " + " WHERE EmployeeID = @empId", conn); // Add the employee ID parameter and set its value. sc.get_Parameters().Add(new SqlParameter("@empId", SqlDbType.Int)). set_Value(anID.ToString()); SqlDataReader sdr = null; try { conn.Open(); sdr = sc.ExecuteReader(); // Only loop once. if (sdr != null && sdr.Read()) { // The IEnumerable contains DataRowView objects. this.firstName = sdr.get_Item("FirstName").ToString(); this.lastName = sdr.get_Item("LastName").ToString(); this.title = sdr.get_Item("Title").ToString(); this.titleOfCourtesy = sdr.get_Item("TitleOfCourtesy").ToString(); if (!(sdr.IsDBNull(4))) { this.reportsTo = sdr.GetInt32(4); } } else { throw new NorthwindDataException("Data not loaded for" + " employee id."); } } finally { try { if (sdr != null) { sdr.Close(); } conn.Close(); } catch (SqlException exp) { // Log an event in the Application Event Log. } } } //NorthwindEmployee private Object id; /** @property */ public String get_EmpID() { return id.ToString(); } //get_EmpID private String lastName; /** @property */ public String get_LastName() { return lastName; } //get_LastName /** @property */ public void set_LastName(String value) { lastName = value; } //set_LastName private String firstName; /** @property */ public String get_FirstName() { return firstName; } //get_FirstName /** @property */ public void set_FirstName(String value) { firstName = value; } //set_FirstName /** @property */ public String get_FullName() { return get_FirstName() + " " + get_LastName(); } //get_FullName private String title; /** @property */ public String get_Title() { return title; } //get_Title /** @property */ public void set_Title(String value) { title = value; } //set_Title private String titleOfCourtesy; /** @property */ public String get_Courtesy() { return titleOfCourtesy; } //get_Courtesy /** @property */ public void set_Courtesy(String value) { titleOfCourtesy = value; } //set_Courtesy private int reportsTo; /** @property */ public int get_Supervisor() { return reportsTo; } //get_Supervisor /** @property */ public void set_Supervisor(int value) { reportsTo = value; } //set_Supervisor public boolean Save() { // Implement persistence logic. return true; } //Save public boolean Delete() { // Implement delete logic. return true; } //Delete } //NorthwindEmployee class NorthwindDataException extends Exception { public NorthwindDataException(String msg) { super(msg); } //NorthwindDataException } //NorthwindDataException

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- ObjectDataSource.SqlCacheDependency プロパティのページへのリンク