Γεια χαρά σε όλους και καλό μήνα.
Έχω ένα SqlDataSource (dsrc στο εξής), στο οποίο έχω enabled το caching. Το dsrc αυτό έχει Cache Dependency τον πίνακα Addresses. Έχω λοιπόν ένα WebUserControl το οποίο κάνει INSERT στον πίνακα αυτό. To INSERT το πραγματοποιώ με ένα SqlDataAdapter, του οποίου του ορίζω το SqlCommand που έχω και κάνω fill σε ένα DataSet. Μέχρι εδώ απλό και συνηθισμένο σενάριο.
Dim da As New SqlDataAdapter(το INSERT Command μου) Dim ds As New DataSet da.Fill(ds) Me.dsrc.DataBind() |
|
Τώρα, το θέμα είναι ότι ενώ κάνω Databind στο dsrc, στη σελίδα που φορτώνει δε φαίνονται οι αλλαγές, λόγω του ότι το dsrc δεν έχει ακόμα δει ότι έγιναν αλλαγές στον πίνακα, οπότε δείχνει τα cached data. Μάλιστα, επιβεβαίωσα ότι έφταιγε το caching, βάζοντας ένα thread.sleep() για λίγο παραπάνω απ΄ όσο έχω βάλει να γίνεται ο έλεγχος για τις αλλαγές στη βάση. Στην περίπτωση αυτή, έφερε τελικά το νέο record, αλλά φυσικά δεν είναι λύση αυτή.
Επίσης, δοκίμασα να βγάλω προσωρινά το caching από το dsrc (στο runtime), να κάνω το INSERT, να κάνω Databind και μετά να ενεργοποιήσω πάλι το caching, χωρίς όμως αποτέλεσμα (και ακόμα δεν ξέρω το γιατί, αφού λογικά με το caching disabled, θα έπρεπε το dsrc να στείλει κανονικά το SELECT query στη βάση, σωστά; )
Ξέρω πως προφανώς μια λύση είναι να βάλω το INSERT command μου στο InsertQuery του dsrc και να χρησιμοποιήσω το dsrc.Insert() method, αλλά έχω άλλους λόγους που δε θέλω να το κάνω αυτό, αλλιώς θα το είχα κάνει ήδη.
Επειδή είναι και η πρώτη φορά που γράφω, να σας πω ότι είμαι rookie γενικά στον προγραμματισμό, οπότε σας παρακαλώ με το μαλακό 