ASP.NET Tutorial/Cache/SqlDataSource cache

Материал из .Net Framework эксперт
Версия от 14:57, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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>