ASP.NET Tutorial/Cache/SqlDataSource cache
Содержание
Adding Items with an Absolute Expiration Policy
<source lang="csharp">
<%@ Page Language="C#" Trace="true" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %> <%@ Import Namespace="System.Web.Configuration" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> void Page_Load()
{ DataTable products = (DataTable)Cache["Products"]; if (products == null) { products = GetProductsFromDB(); Cache.Insert("Products", products, null, DateTime.Now.AddHours(1), Cache.NoSlidingExpiration); } grdProducts.DataSource = products; grdProducts.DataBind(); } private DataTable GetProductsFromDB() { Trace.Warn("Getting products from database"); string conString = WebConfigurationManager.ConnectionStrings ["Products"].ConnectionString; SqlDataAdapter dad = new SqlDataAdapter("SELECT Title,Director FROM Products", conString); DataTable products = new DataTable(); dad.Fill(products); return products; }
</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">
<title>Show Absolute Expiration</title>
</head> <body>
<form id="form1" runat="server">
<asp:GridView id="grdProducts" Runat="server" />
</form>
</body> </html></source>
Adding Items with a Sliding Expiration Policy
<source lang="csharp">
<%@ Page Language="C#" Trace="true" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %> <%@ Import Namespace="System.Web.Configuration" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server">
void Page_Load() { DataSet products = (DataSet)Cache["Products"]; if (products == null) { products = GetProductsFromDB(); Cache.Insert("Products", products, null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(5)); } grdProducts.DataSource = products; grdProducts.DataBind(); } private DataSet GetProductsFromDB() { Trace.Warn("Getting products from database"); string conString = WebConfigurationManager.ConnectionStrings ["Products"].ConnectionString; SqlDataAdapter dad = new SqlDataAdapter("SELECT Title,Director FROM Products", conString); DataSet products = new DataSet(); dad.Fill(products); return products; }
</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">
<title>Show Sliding Expiration</title>
</head> <body>
<form id="form1" runat="server">
<asp:GridView id="grdProducts" Runat="server" />
</form>
</body> </html></source>
Adding Items with Dependencies
<source lang="csharp">
<%@ Page Language="C#" Trace="true" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server">
void Page_Load() { DataSet products = (DataSet)Cache["Products"]; if (products == null) { Trace.Warn("Retrieving products from file system"); products = new DataSet(); products.ReadXml(MapPath("~/Data.xml")); CacheDependency fileDepend = new CacheDependency(MapPath("~/Data.xml")); Cache.Insert("Products", products, fileDepend); } grdProducts.DataSource = products; grdProducts.DataBind(); }
</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">
<title>Show File Dependency</title>
</head> <body>
<form id="form1" runat="server">
<asp:GridView id="grdProducts" Runat="server" />
</form>
</body> </html></source>
SqlDataSource caching
<source lang="csharp">
<%@ Page Language="C#"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">
<title>Untitled Page</title>
</head> <body>
<form id="form1" runat="server">
<asp:SqlDataSource ID="sourceEmployeeCities" runat="server" ProviderName="System.Data.SqlClient" ConnectionString="<%$ ConnectionStrings:Northwind %>" SelectCommand="SELECT DISTINCT City FROM Employees" EnableCaching="True" CacheDuration="3600"> </asp:SqlDataSource> <asp:DropDownList ID="lstCities" runat="server" DataSourceID="sourceEmployeeCities" DataTextField="City" Width="205px" AutoPostBack="True"> </asp:DropDownList> <asp:SqlDataSource ID="sourceEmployees" runat="server" ProviderName="System.Data.SqlClient" ConnectionString="<%$ ConnectionStrings:Northwind %>" SelectCommand="SELECT EmployeeID, FirstName, LastName, Title, City FROM Employees WHERE City=@City" EnableCaching="True" CacheDuration="600"> <SelectParameters> <asp:ControlParameter ControlID="lstCities" Name="City" PropertyName="SelectedValue" /> </SelectParameters> </asp:SqlDataSource> <asp:GridView ID="GridView1" runat="server" DataSourceID="sourceEmployees" AutoGenerateColumns="False" DataKeyNames="EmployeeID"> <AlternatingRowStyle BackColor="White" /> <Columns> <asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID" InsertVisible="False" ReadOnly="True" SortExpression="EmployeeID" /> <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" /> <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" /> <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" /> <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" /> </Columns> </asp:GridView>
</form>
</body> </html> File: Web.config <?xml version="1.0"?> <configuration>
<connectionStrings> <add name="Northwind" connectionString="Data Source=localhost\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=SSPI"/> </connectionStrings>
</configuration></source>