<?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>.NET Framework</title><link>https://www.dotnetzone.gr:443/cs/forums/14/ShowForum.aspx</link><description>Θέματα για threading, remoting, reflection, exception handling, security, regex κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Ελαχιστοποίηση κύκλου ζωής ενός LINQ DataContext</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/66731.aspx</link><pubDate>Tue, 02 Aug 2011 23:46:59 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:66731</guid><dc:creator>George Parissis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/66731.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=66731</wfw:commentRss><description>&lt;p&gt;Ακριβώς αυτό κάνουν τα STE (Self Tracking Entities).&lt;/p&gt;&lt;p&gt;Όμως είναι διαθέσιμα μόνο για το Entity Framework οπότε δυστυχώς θα πρέπει να αλλάξεις Framework. Linq To SQL &amp;amp; Entity Framework δεν έχουν πολλές διαφορές, ίσως κάποια Linq Extensions να υπάρχουν στο ένα και όχι στο άλλο αλλά σε γενικές γραμμές βασίζονται στα ίδια πράγματα.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Απ: Ελαχιστοποίηση κύκλου ζωής ενός LINQ DataContext</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/66730.aspx</link><pubDate>Tue, 02 Aug 2011 23:13:32 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:66730</guid><dc:creator>pontifikas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/66730.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=66730</wfw:commentRss><description>Ναι, αναφέρομαι σε LINQ to SQL.&amp;nbsp;&lt;div&gt;Για να είμαι ειλικρινής, δεν ήξερα για το LINQ to Entities.&lt;/div&gt;&lt;div&gt;Όταν αναφέρεσαι σε self tracking εννοείς ότι το αντικείμενο αποθηκεύει Log των ενεργειών που έχουν γίνει πάνω σε αυτό και δίνει το log στο context για να&amp;nbsp;&lt;/div&gt;&lt;div&gt;γίνουν generate τα κατάλληλα queries?&lt;/div&gt;</description></item><item><title>Απ: Ελαχιστοποίηση κύκλου ζωής ενός LINQ DataContext</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/66729.aspx</link><pubDate>Tue, 02 Aug 2011 22:05:55 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:66729</guid><dc:creator>George Parissis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/66729.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=66729</wfw:commentRss><description>&lt;p&gt;Επειδή ανέφερες σκέτο LINQ να θεωρήσω ότι χρησιμοποιείς Linq To SQL ή Entity Framework;&lt;/p&gt;&lt;p&gt;Αν χρησιμοποιείς EF τότε μπορείς να πας στα STE (Self Tracking Entities). Το EF σου δημιουργεί POCO classes που μπορούν να παρακολουθούν τις αλλαγές που έχουν γίνει σε αυτά, οπότε όταν τα βάλεις σε ένα Context που θα δημιουργήσεις εκείνη την στιγμή (με την εντολή ApplyChanges) τότε θα μπορεί το context να φτιάξει τα SQL Queries που χρειάζονται και έτσι μετά το SaveChanges να το κάνεις dispose.&lt;/p&gt;&lt;p&gt;Αν από την άλλη χρησιμοποιείς Linq To SQL δεν ξέρω να σου προτείνω κάτι. Η Microsoft αν και επίσημα το υποστηρίζει, ότι καινούριο βγάζει στον τομέα DataAccess το ενσωματώνει στο EF. &lt;/p&gt;</description></item><item><title>Ελαχιστοποίηση κύκλου ζωής ενός LINQ to SQL DataContext</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/66728.aspx</link><pubDate>Tue, 02 Aug 2011 20:17:39 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:66728</guid><dc:creator>pontifikas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/66728.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=66728</wfw:commentRss><description>Παντού διαβάζουμε ότι τα DataContext δεν προτείνεται να έχουν διάρκεια ζωής περισσότερο από ... δευτερόλεπτα.&amp;nbsp;&lt;div&gt;Τους τελευταίους μήνες εργάστηκα σε μια εφαρμογή όπου για λόγους χρόνου, συστηματικά παρέβησα την συμβουλή αυτή. Έχοντας&lt;/div&gt;&lt;div&gt;λάβει όμως badget για δημιουργία 2ης έκδοσης, θα ήθελα να προσπαθήσω να δω πώς μπορώ να την ακολουθήσω.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Το σενάριο που με αναγκάζει να διατηρώ ανοικτό το DC μου για αρκετή ώρα είναι το ακόλουθο:&lt;/div&gt;&lt;div&gt;Διαχειρίζομαι φόρμες συντήρησης εγγραφών. Οπότε επιλέγοντας μια εγγραφή από τις διαθέσιμες πρέπει να μπορώ να δω και να μεταβάλλω ό,τι κρέμμεται&amp;nbsp;&lt;/div&gt;&lt;div&gt;από αυτήν. Έτσι μπορώ να αλλάζω τα properties της εγγραφής αλλά, να προσθέτω συσχετήσεις με άλλες εγγραφές (μέσα από κάποιο Grid, στην ίδια φόρμα),&amp;nbsp;&lt;/div&gt;&lt;div&gt;να διαγράφω παλαιές συσχετίσεις ή κάποια από αυτές που μόλις προσέθεσα και ακόμα δεν έχω κάνει persist.&lt;/div&gt;&lt;div&gt;Επίσης συμβαίνει στην ίδα φόρμα, να διαχειρίζομαι συσχετίσεις πολλάπλών επιπέδων (π.χ. Α&amp;lt;-(1:*)-&amp;gt;B&amp;lt;-(1:*)-&amp;gt;C).&lt;/div&gt;&lt;div&gt;Φυσικά όλες αυτές οι αλλαγές θα πρέπει να γίνουν persist όταν ο χρήστης αποφασίσει, και αν (μπορεί να κάνει undo).&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Αυτό που μέχρι τώρα κάνω είναι να έχω ένα κέντρικό DC για την Φόρμα από το οποίο σε πρώτη φάση εμπλουτίζω τα Grids των εγγραφών μου&lt;/div&gt;&lt;div&gt;και παραμένει ενεργό μέχρι να γίνει κάποιο SubmitChanges οπότε και το κάνω Refresh.&lt;/div&gt;&lt;div&gt;Αν την ώρα που πάω να κάνω SubmitChanges συμβεί κάποιο conflict, έχω γράψει έναν generic μηχανισμό που ανάλογα με το είδος του conflict,&amp;nbsp;&lt;/div&gt;&lt;div&gt;και σε συνεργασία με τον χρήστη, αποφασίζει για το αν θα κάνει Replace ή undo.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ο άλλος τρόπος που σκέφτομαι (και ίσως από άγνοια κάνω λάθος) είναι να δουλέψω με collections αντικειμένων. Αυτό όμως προϋποθέτει ότι θα πρέπει να έχω κάνει pre-cache μεγάλο&lt;/div&gt;&lt;div&gt;όγκο δεδομένων, χωρίς απαραίτητα να αποφεύγω τα conflicts.&amp;nbsp;&lt;/div&gt;&lt;div&gt;Πώς είναι δυνατό να κάνω χρήση του DC μόνο στο Load και στα Delete-Update-Insert και στο ενδιάμεσο να δουλεψω αποδοτικά μόνο με collections?&amp;nbsp;&lt;/div&gt;&lt;div&gt;Ή μήπως υπάρχει άλλος τρόπος?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ευχαριστώ.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</description></item></channel></rss>