<?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>ADO.NET</title><link>https://www.dotnetzone.gr:443/cs/forums/78/ShowForum.aspx</link><description>Θέματα σχετικά με την προσπέλαση δεδομένων μέσω του ADO.NET και του System.Data namespace</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: EF4: Αυτόματο Generation κλάσεων που δεν κάνουν Inherit από το EntityObject αλλά από κάποια άλλη κλάση.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70171.aspx</link><pubDate>Mon, 30 Apr 2012 07:15:48 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70171</guid><dc:creator>nikolaosk</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70171.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70171</wfw:commentRss><description>Γιώργο μάλλον εννοείς τους Tracing Provider Wrappers από τον Jaroslaw Kowalski...δες ένα post μου &lt;a href="http://weblogs.asp.net/dotnetstories/archive/2011/01/31/how-to-profile-linq-to-entities-queries-in-your-asp-net-applications-part-2.aspx"&gt;εδώ&lt;/a&gt; &lt;br&gt;&lt;br&gt;Φυσικά το καλύτερο εργαλείο-Profiler είναι αυτό το οποίο το έχει φτιάξει ο Ayende (&lt;span style="font-family:Georgia, 'Times New Roman', Times, serif;font-size:11px;font-style:normal;font-variant:normal;font-weight:bold;letter-spacing:normal;line-height:normal;orphans:2;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;float:none;"&gt;Oren Eini&lt;/span&gt;).Θα πρέπει να αναφέρεσαι στο &lt;a href="http://efprof.com/"&gt;Εntity Framework Profiler&lt;/a&gt; .Αν και είναι paid application πραγματικά είναι καταπληκτικό.&lt;br&gt;&lt;br&gt;Έχω γράψει ένα μικρό post για αυτό &lt;a href="http://weblogs.asp.net/dotnetstories/archive/2011/02/01/how-to-profile-linq-to-entities-queries-in-your-asp-net-applications-part-3.aspx"&gt;εδώ&lt;/a&gt;&lt;br&gt;</description></item><item><title>Απ: EF4: Αυτόματο Generation κλάσεων που δεν κάνουν Inherit από το EntityObject αλλά από κάποια άλλη κλάση.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70163.aspx</link><pubDate>Mon, 30 Apr 2012 02:21:13 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70163</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70163.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70163</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;Παναγιώτης Καναβός:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Δεν θα έλεγα ότι μειώνεται. Από τη μία το NHibernate δεν "κάθεται", από την άλλη υπάρχουν ακόμα σοβαρά προβλήματα στο EF, για παράδειγμα η ανάγκη ακόμα να κάνεις compile τα queries για να μην δεις χοντρή καθυστέρηση είναι μεγάλο πρόβλημα. Το ότι θα λυθεί στην επόμενη έκδοση δεν σημαίνει ότι δεν είναι πρόβλημα τώρα - ή ότι υπάρχουν δεν και πολλά άλλα θέματα.&lt;div&gt;&lt;br&gt;Επιπλέον, οι λύσεις που εισάγονται δεν είναι και τόσο καθαρές όσο θα έπρεπε, ενώ τα μπαγκάζια των διπλών (και πλέον περιττών) μοντέλων στο XML θα τα κουβαλάμε για καιρό.&amp;nbsp;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Από την άλλη υπάρχουν ήδη πάρα πολλά open source projects, βιβλιοθήκες, frameworks, εργαλεία τα οποία χρησιμοποιούν ΝΗ. Δεν ξέρω κανένα να χρησιμοποιεί EF (άντε είδα 1-2 τώρα που googlαρα).&amp;nbsp;&lt;/div&gt;&lt;div&gt;Και ο μοναδικός profiler για EF είναι&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Να το πω αλλιώς, το NH δεν είναι απλά ώριμο, είναι και το καθιερωμένο και με ευρεία υποστήριξη. Το EF είναι αυτό που προσπαθεί να πείσει αλλά ακόμα δεν έχει φτάσει το καθιερωμένο και του λείπει η υποστήριξη.&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Από εκεί καταλήγω και στο ότι η απόφαση της εταιρείας που είπε EF βασίστηκε σε προσδοκίες ότι "κάποτε θα είναι αρκετά καλό" και χρεώνεται τώρα το κόστος του ότι ΔΕΝ είναι. Με άλλα λόγια, δεν ήταν τόσο λογική όσο νομίζανε.&lt;br&gt;&lt;/div&gt;&lt;div&gt;Υ.Γ. Και μην ξεχνάμε και το θέμα του support, το οποίο σαφώς υπολείπεται στο EF. Τα bug στο NH διορθώνονται γρήγορα, ενώ για να βγει fix στο EF θα πρέπει να μπει στο release schedule της MS. Επίσης μπορείς να βρεις εύκολα fixes για το NH, είτε με τη μορφή patches είτε ως κώδικα. Για να πάρεις patch ή κώδικα από την MS θα πρέπει να έχεις ΠΟΛΥ ακριβό συμβόλαιο υποστήριξης.&lt;/div&gt;&lt;p&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p&gt;Καλά γίνεσαι πολύ κακός με το EF, και δεν νομίζω ότι το αξίζει:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Το compiled queries για το ObjectContext υπάρχουν από την έκδοση 1 - αν θα πρέπει να περιμένει κάποιος την έκδοση 5 (3η έκδοση) για να τα δει και για το DbContext, είναι ένα ερώτημα που παίρνει συζήτηση, αν το θες και που.&lt;/li&gt;&lt;li&gt;Το .edmx, είναι πολύ πιο χρήσιμο από το .xml του NHiberbate&amp;nbsp;που περιέχει το conceptual model, το&amp;nbsp;mapping και hints για το physical&amp;nbsp;-&amp;gt; το .edmx περιέχει και το physical model, το conceptual model και το mapping μεταξύ τους. Με τα T4 templates, όποιος έχει φτιάξει ένα .edmx, μπορεί να βγάλει ότι θέλει από μέσα ότι θέλει, όπως το θέλει -&lt;u&gt;επ' ακριβώς&lt;/u&gt;-.&lt;/li&gt;&lt;li&gt;To ότι το EF έρχεται να καλύψει ότι σενάριο ανάπτυξης υπάρχει - &lt;em&gt;και μόνο με το κριτήριο αυτό&lt;/em&gt; - να το συγκρίνεις στην συνέχεια με το NHibernate -&amp;nbsp;&lt;em&gt;που είναι στην "πιάτσα" περισσότερο&lt;/em&gt;&amp;nbsp;- &amp;nbsp;ενώ το δευτερο δεν έχει, αλλά&amp;nbsp;ούτε θα έχει, τον ίδιο σκοπό, κάνεις μια σύγκριση μεταξύ τους που είναι ανεπιτυχής. Και ας μην μιλήσουμε για learning curve...&lt;/li&gt;&lt;li&gt;O ίδιος που έχει φτιάξει τον profiler για το NHibernate έχει φτιάξει και profiler για το EF, ο Ayende. Αλλά για τον EF δεν είναι μόνο αυτός, υπάρχει&amp;nbsp;o Huagati Query Profiler και άλλος ένας που μου διαφεύγει.&lt;/li&gt;&lt;li&gt;Για το θέμα του support του NHibernate, να μου επιτρέψεις να διαφωνίσω - το NHibernate είναι ένα ωραίο προιόν, αλλά όταν θα έρθει η ώρα για το "σοβαρό" support θα το πληρώσεις πολύ ακριβά - μην σου πω ότι θα πρέπει να έρθει και ο ίδιος ο Ayende. Από την άλλη μεριά στο support προς την Microsoft είναι απλά μια διαδικασία...&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;George J.&lt;br&gt;&lt;/p&gt;</description></item><item><title>Απ: EF4: Αυτόματο Generation κλάσεων που δεν κάνουν Inherit από το EntityObject αλλά από κάποια άλλη κλάση.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70162.aspx</link><pubDate>Sun, 29 Apr 2012 22:02:19 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70162</guid><dc:creator>nikolaosk</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70162.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70162</wfw:commentRss><description>Δεν έχω δουλέψει με το NH οπότε θα δεχτώ ότι είναι πολύ πιο ώριμο σε σχέση με το EF. Η αλήθεια είναι ότι το EF έχει ωριμάσει πολύ από την έκδοση 1.0 και υποστηρίζει πέρα από το Model First/Code First μια σειρά από νέα features (enums,spatial data types,table - valued functions) που επιτακτικά ζητούσαν οι developers.&lt;br&gt;&lt;br&gt;Όσο αφορά το performance (ποτέ δεν είναι κανείς ευχαριστημένος με το Performance) παραμπέμπω σε παλιότερο &lt;a href="http://www.dotnetzone.gr/cs/forums/post/70021.aspx"&gt;post&lt;/a&gt; μου.&amp;nbsp; &lt;br&gt;</description></item><item><title>Απ: EF4: Αυτόματο Generation κλάσεων που δεν κάνουν Inherit από το EntityObject αλλά από κάποια άλλη κλάση.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70144.aspx</link><pubDate>Fri, 27 Apr 2012 19:38:37 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70144</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70144.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70144</wfw:commentRss><description>Δεν θα έλεγα ότι μειώνεται. Από τη μία το NHibernate δεν "κάθεται", από την άλλη υπάρχουν ακόμα σοβαρά προβλήματα στο EF, για παράδειγμα η ανάγκη ακόμα να κάνεις compile τα queries για να μην δεις χοντρή καθυστέρηση είναι μεγάλο πρόβλημα. Το ότι θα λυθεί στην επόμενη έκδοση δεν σημαίνει ότι δεν είναι πρόβλημα τώρα - ή ότι υπάρχουν δεν και πολλά άλλα θέματα.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Επιπλέον, οι λύσεις που εισάγονται δεν είναι και τόσο καθαρές όσο θα έπρεπε, ενώ τα μπαγκάζια των διπλών (και πλέον περιττών) μοντέλων στο XML θα τα κουβαλάμε για καιρό.&amp;nbsp;&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Από την άλλη υπάρχουν ήδη πάρα πολλά open source projects, βιβλιοθήκες, frameworks, εργαλεία τα οποία χρησιμοποιούν ΝΗ. Δεν ξέρω κανένα να χρησιμοποιεί EF (άντε είδα 1-2 τώρα που googlαρα).&amp;nbsp;&lt;/div&gt;&lt;div&gt;Και ο μοναδικός profiler για EF είναι&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Να το πω αλλιώς, το NH δεν είναι απλά ώριμο, είναι και το καθιερωμένο και με ευρεία υποστήριξη. Το EF είναι αυτό που προσπαθεί να πείσει αλλά ακόμα δεν έχει φτάσει το καθιερωμένο και του λείπει η υποστήριξη.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Από εκεί καταλήγω και στο ότι η απόφαση της εταιρείας που είπε EF βασίστηκε σε προσδοκίες ότι "κάποτε θα είναι αρκετά καλό" και χρεώνεται τώρα το κόστος του ότι ΔΕΝ είναι. Με άλλα λόγια, δεν ήταν τόσο λογική όσο νομίζανε.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Υ.Γ. Και μην ξεχνάμε και το θέμα του support, το οποίο σαφώς υπολείπεται στο EF. Τα bug στο NH διορθώνονται γρήγορα, ενώ για να βγει fix στο EF θα πρέπει να μπει στο release schedule της MS. Επίσης μπορείς να βρεις εύκολα fixes για το NH, είτε με τη μορφή patches είτε ως κώδικα. Για να πάρεις patch ή κώδικα από την MS θα πρέπει να έχεις ΠΟΛΥ ακριβό συμβόλαιο υποστήριξης.&lt;/div&gt;</description></item><item><title>Απ: EF4: Αυτόματο Generation κλάσεων που δεν κάνουν Inherit από το EntityObject αλλά από κάποια άλλη κλάση.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70143.aspx</link><pubDate>Fri, 27 Apr 2012 19:22:26 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70143</guid><dc:creator>pontifikas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70143.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70143</wfw:commentRss><description>Σε ευχαριστώ για την απάντησή σου Παναγιώτη. Εν τέλη χρησιμοποίησα τον Default code generator γιατί δεν ήθελα να μπλέξω με &lt;br&gt;"notify change" κώδικα στα properties μου.&lt;br&gt;Ίσως ο λόγος που "όλος" ο κόσμος χρησιμοποιεί το nHibernate είναι ότι μέχρι τώρα η MS είχε το EF σε πολύ "άσχημη" κατάσταση. &lt;br&gt;Με το EF αναντίρρητα να ωριμάζει, η αναγκαιότητα στο μέλλον της χρήσης ενός μή Ms υποστηριζόμενου (και μάλιστα open source) &lt;br&gt;ORM θα αρχίσει να μικραίνει(πιθανόν). &lt;br&gt;Πρόσθεσε σε αυτό και διάφορα στοιχεία εφαπτόμενα με την πολιτική μιας εταιρίας, και θα καταλήξεις στην βάση που στοιχειοθέτησε την &lt;br&gt;επιλογή αυτή. &lt;br&gt;</description></item><item><title>Απ: EF4: Αυτόματο Generation κλάσεων που δεν κάνουν Inherit από το EntityObject αλλά από κάποια άλλη κλάση.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70140.aspx</link><pubDate>Fri, 27 Apr 2012 17:11:01 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70140</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70140.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70140</wfw:commentRss><description>Αυτά για όσους λένε "πολύ ώριμο" το EF4. Και φυσικά να μην ρωτήσω τί σε έπιασε και χρησιμοποιείς EF όταν όλος ο κόσμος χρησιμοποιεί NHibernate, ε?&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Λίγο πιο σοβαρά, η συχνή δημιουργία κλάσεων από τη βάση είναι anti-pattern. Είναι "ανάποδη" καθώς κατά κανόνα οι αλλαγές κατά το development προέρχονται από αλλαγή στη σχεδίαση των κλάσεων, όχι της βάσης. Και δεν συζητάμε ότι κατά κανόνα αυτό που αλλάζει πιο συχνά είναι ο κώδικας στις μεθόδους και όχι τα πεδία. &lt;br&gt;Αν ξαναδημιουργείς τις κλάσεις από τη βάση, τί γίνεται με τον κώδικα σου? Ναι, τον έχεις σε partial κλάσεις αλλά τί γίνεται όταν προστίθενται ή χειρότερα αφαιρούνται πεδία?&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Μόνο αν έχεις ήδη έτοιμη μία βάση (legacy βάση δηλαδή) έχει νόημα να φτιάξεις κλάσεις "στα γρήγορα" και μετά να συνεχίσεις το development ανεξάρτητα. Ακόμα κι έτσι μιλάμε για quick fix γιατί πάντα χρειάζονται διαφοροποιήσεις στον κώδικα που κάνουν απαραίτητη την τροποποίηση των κλάσεων που δημιουργούνται. Δεν θα βάλεις inheritance, validations, δεν θα αλλάξεις τα πεδία, δεν θα προσθέσεις κάποια άλλη λογική? Θα τα ξαναφτιάχνεις αυτά κάθε φορά που κάνεις regenerate?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Με άλλα λόγια θα έπρεπε να κοιτάς το Code First, όχι το πως να ξαναδημιουργήσεις τις κλάσεις όταν αλλάζει η βάση. &amp;nbsp;Ο μόνος λόγος που όσοι χρησιμοποιούν EF ξεκινάνε από τη βάση είναι ότι ως τώρα το framework και το εργαλείο (Visual Studio) δεν μπορούσαν να χειριστούν σωστά το mainstream σενάριο.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Συγκεκριμένα για την ερώτηση σου τέλος, θα πρέπει να κοιτάξεις το &lt;a href="http://msdn.microsoft.com/en-us/magazine/gg232765.aspx"&gt;DbContext&lt;/a&gt;&amp;nbsp;του EF 4.1 και το&lt;a href="http://visualstudiogallery.msdn.microsoft.com/7812b04c-db36-4817-8a84-e73c452410a2"&gt; DbContext generator&lt;/a&gt;. Ο generator προσθέτει &amp;nbsp;Τ4 templates για να φτιάξει POCO κλάσεις από ένα μοντέλο EF . Προφανώς μπορείς να πειράξεις το template για να πετύχεις αυτό που θέλεις. Ένα walkthrough υπάρχει &lt;a href="http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx"&gt;εδώ&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Το EF 4.1 επιτρέπει σε σημαντικό βαθμό και το mainstream scenario, το Code First. Walkthrough γι αυτό θα βρεις &lt;a href="http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-code-first-walkthrough.aspx"&gt;εδώ&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</description></item><item><title>EF4: Αυτόματο Generation κλάσεων που δεν κάνουν Inherit από το EntityObject αλλά από κάποια άλλη κλάση.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70139.aspx</link><pubDate>Fri, 27 Apr 2012 03:02:52 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70139</guid><dc:creator>pontifikas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70139.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70139</wfw:commentRss><description>Πώς θα μπορούσα να το κάνω αυτό χωρίς να χρειάζεται κάθε φορά που κάνω μια αλλαγή/προσθήκη στην βάση μου, να μοντάρω &lt;br&gt;κάποιο Τ4 template;&lt;br&gt;&lt;br&gt;Ευχαριστώ.&lt;br&gt;</description></item></channel></rss>