ASP.NET Tutorial/Cache/SqlDataSource cache
Содержание
Adding Items with an Absolute Expiration Policy
<%@ 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">
<div>
<asp:GridView
id="grdProducts"
Runat="server" />
</div>
</form>
</body>
</html>
Adding Items with a Sliding Expiration Policy
<%@ 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">
<div>
<asp:GridView
id="grdProducts"
Runat="server" />
</div>
</form>
</body>
</html>
Adding Items with Dependencies
<%@ 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">
<div>
<asp:GridView
id="grdProducts"
Runat="server" />
</div>
</form>
</body>
</html>
SqlDataSource caching
<%@ 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">
<div>
<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>
</div>
</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>