<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>ASP.NET WebForms</title><link>https://www.dotnetzone.gr:443/cs/forums/13/ShowForum.aspx</link><description>Θέματα για web εφαρμογές, σε ASP.NET WebForms</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Re: Θέμα με το caching στην ASP 2</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/1534.aspx</link><pubDate>Sat, 02 Apr 2005 01:14:21 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:1534</guid><dc:creator>Themis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/1534.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=13&amp;PostID=1534</wfw:commentRss><description>&lt;font style="BACKGROUND-COLOR: #ffffff"&gt;Πάντως, για την ιστορία, ενώ προσπάθησα να τρέξω την procedure AspNet_SqlCacheQueryRegisteredTablesStoredProcedure για να μαρκάρει ότι άλλαξε το table, δεν έπαιξε. Τελικά χρησιμοποίησα το INSERT του DataSource και φυσικά έπαιξε, αλλά η απορία μου έμεινε... &lt;img src="/forums//emoticons/emotion-8.gif" alt="Indifferent" /&gt;&lt;br /&gt;&lt;br /&gt;Σε πολύ ευχαριστώ για τις πληροφορίες.&lt;br /&gt;&lt;br /&gt;Θέμης.&lt;/font&gt;</description></item><item><title>Re: Θέμα με το caching στην ASP 2</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/1532.aspx</link><pubDate>Sat, 02 Apr 2005 00:18:54 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:1532</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/1532.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=13&amp;PostID=1532</wfw:commentRss><description>Περιμένωντας το Yukon, που δεν χρειάζεται polling&lt;img src="/forums//emoticons/emotion-5.gif" alt="Wink" /&gt; &lt;br /&gt; &amp;nbsp; Το cache invalidation δεν είναι χαρακτηριστικό του DataSet ή του ADO.NET, αλλά μια λειτουργία που υλοποιεί το SqlDataSource πάνω από τις βασικές κλάσεις. Αυτό που κάνει είναι να γράφει τα αποτελέσματα στο cache χρησιμοποιώντας ένα κλειδί που φτιάχνει κάνοντας hash στο συνδισμό command, connection, παραμέτρων και τιμών. Περιοδικά ελέγχει τη βάση να δει τι άλλαξε και να κάνει invalidate τα σχετικά items. &lt;br /&gt; &amp;nbsp; Όταν κάνεις INSERT μέσω του datasource, αυτό κοιτάζει ποιά items πρέπει να γίνουν invalid και τα βγάζει από το cache. &lt;br /&gt; &amp;nbsp; &lt;br /&gt; &amp;nbsp; Ο άλλος τρόπος να κάνεις invalidate τα δεδομένα είναι να δεις πως υπολογίζει το cache key το DataSource και να αφαιρέσεις τα δεδομένα με ένα Remove(key). Δυστυχώς αυτό δεν είναι απλή δουλειά και ακόμα δεν έχω βρει πως γίνεται.&lt;br /&gt;</description></item><item><title>Re: Θέμα με το caching στην ASP 2</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/1524.aspx</link><pubDate>Fri, 01 Apr 2005 22:20:40 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:1524</guid><dc:creator>Themis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/1524.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=13&amp;PostID=1524</wfw:commentRss><description>&lt;p&gt;&lt;font size="2"&gt;Ναι, το έχω ενεργοποιήσει και γενικώς παίζει κανονικά χωρίς πρόβλημα. Απλά στη συγκεκριμένη περίπτωση, δε χρησιμοποίησα το DataSource για να κάνω INSERT, αλλά πήγα με πλάγιο τρόπο. Και επειδή το PollTime το έχω βάλει 1000msec, το DataSource δεν προλαβαίνει να δει ότι κάτι έχει αλλάξει στον πίνακα μέχρι να φορτώσει η σελίδα. Γι' αυτό είπα ότι με το thread.sleep() το θέμα λυνόταν.&lt;br /&gt;&lt;br /&gt;Δηλαδή αν έπρεπε κάπως να συγκεκριμενοποιήσω την ερώτησή μου, αυτή θα ήταν "πώς μπορούμε να ενημερώσουμε ένα DataSource ότι άλλαξε ο πίνακάς του χωρίς να χρησιμοποιήσουμε το ίδιο το DataSource για την ενημέρωση του πίνακα".&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Re: Θέμα με το caching στην ASP 2</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/1521.aspx</link><pubDate>Fri, 01 Apr 2005 19:04:44 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:1521</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/1521.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=13&amp;PostID=1521</wfw:commentRss><description>Έχεις τρέξει το aspnet_reqsql για να ενεργοποιήσεις το cache invalidation στον SQL Server? Αν δεν το τρέξεις αυτό, το SqlDataSource δεν καταλαβαίνει τις αλλαγές. Το aspnet_reqsql δημιουργεί ένα κεντρικό πίνακα που περιέχει τις τελευταίες αλλαγές που έγιναν στη βάση, και δημιουργεί triggers στους πίνακες που θέλεις να παρακολουθήσεις για να ενημερώνει αυτό τον κεντρικό πίνακα.&lt;br /&gt; &amp;nbsp; Οπότε για να δουλέψει το cache invalidation πρέπει να τρέξεις το aspnet_reqsql και να του περάσεις τους πίνακες που θέλεις να παρακολουθείς. Διαφορετικά το SqlDataSource δεν έχει κάποιο τρόπο να καταλάβει τις αλλαγές.&lt;br /&gt; &amp;nbsp;Δες και το http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/cachingnt2.asp&lt;br /&gt;</description></item><item><title>Θέμα με το caching στην ASP 2</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/1516.aspx</link><pubDate>Fri, 01 Apr 2005 16:32:43 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:1516</guid><dc:creator>Themis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/1516.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=13&amp;PostID=1516</wfw:commentRss><description>&lt;p&gt;&lt;font size="2"&gt;Γεια χαρά σε όλους και καλό μήνα.&lt;br /&gt;&lt;br /&gt;Έχω ένα SqlDataSource (dsrc στο εξής), στο οποίο έχω enabled το caching. Το dsrc αυτό έχει Cache Dependency τον πίνακα Addresses. Έχω λοιπόν ένα WebUserControl το οποίο κάνει INSERT στον πίνακα αυτό. To INSERT το πραγματοποιώ με ένα SqlDataAdapter, του οποίου του ορίζω το SqlCommand που έχω και κάνω fill σε ένα DataSet. Μέχρι εδώ απλό και συνηθισμένο σενάριο.&lt;br /&gt;&lt;br /&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td width="100%" valign="top" class="txt4"&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;Dim&lt;/font&gt; da &lt;font color="#0000ff"&gt;As&lt;/font&gt; &lt;font color="#0000ff"&gt;New&lt;/font&gt; SqlDataAdapter(&lt;i&gt;το INSERT Command μου&lt;/i&gt;)&lt;br /&gt;&lt;font color="#0000ff"&gt;Dim&lt;/font&gt; ds &lt;font color="#0000ff"&gt;As&lt;/font&gt; &lt;font color="#0000ff"&gt;New&lt;/font&gt; DataSet&lt;br /&gt;da.Fill(ds)&lt;br /&gt;&lt;font color="#0000ff"&gt;Me&lt;/font&gt;.dsrc.DataBind()&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;br /&gt;&lt;br /&gt;Τώρα, το θέμα είναι ότι ενώ κάνω Databind στο dsrc, στη σελίδα που φορτώνει δε φαίνονται οι αλλαγές, λόγω του ότι το dsrc δεν έχει ακόμα δει ότι έγιναν αλλαγές στον πίνακα, οπότε δείχνει τα cached data. Μάλιστα, επιβεβαίωσα ότι έφταιγε το caching, βάζοντας ένα thread.sleep() για λίγο παραπάνω απ΄ όσο έχω βάλει να γίνεται ο έλεγχος για τις αλλαγές στη βάση. Στην περίπτωση αυτή, έφερε τελικά το νέο record, αλλά φυσικά δεν είναι λύση αυτή.&lt;br /&gt;&lt;br /&gt;Επίσης, δοκίμασα να βγάλω προσωρινά το caching από το dsrc (στο runtime), να κάνω το INSERT, να κάνω Databind και μετά να ενεργοποιήσω πάλι το caching, χωρίς όμως αποτέλεσμα (και ακόμα δεν ξέρω το γιατί, αφού λογικά με το caching disabled, θα έπρεπε το dsrc να στείλει κανονικά το SELECT query στη βάση, σωστά; )&lt;br /&gt;&lt;br /&gt;Ξέρω πως προφανώς μια λύση είναι να βάλω το INSERT command μου στο InsertQuery του dsrc και να χρησιμοποιήσω το dsrc.Insert() method, αλλά έχω άλλους λόγους που δε θέλω να το κάνω αυτό, αλλιώς θα το είχα κάνει ήδη.&lt;br /&gt;&lt;br /&gt;Επειδή είναι και η πρώτη φορά που γράφω, να σας πω ότι είμαι rookie γενικά στον προγραμματισμό, οπότε σας παρακαλώ με το μαλακό &lt;img src="/forums//emoticons/emotion-13.gif" alt="Angel" /&gt;&lt;/font&gt;&lt;/p&gt;</description></item></channel></rss>