<?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>Απ: Εntitydatasource vs Objectdatasource</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70069.aspx</link><pubDate>Fri, 20 Apr 2012 02:21:23 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70069</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70069.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70069</wfw:commentRss><description>&lt;p&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;koslyr:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&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;Δεν υπάρχει λόγος να χρησιμοποιήσεις κανένα datasource.&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;Από διάφορα ενδεικτικά παραδείγματα που διάβασα για το EF, χρησιμοποιούσαν τα περισσότερα το EntityDataSource. &lt;br&gt;Από οτι κατάλαβα ως καλύτερο best practise για την υλοποίηση του DAL προτείνετε την χρήση του EF χωρίς το&amp;nbsp; EntityDataSource control και όλα τα CRUD operations να γίνονται manually μέσω του databinding απευθείας στα data-bound controls; &lt;br&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p&gt;Έχω μια εντύπωση ότι υπάρχει αυτό το μπρος-πίσω των ερωτήσεων, γιατί απλά όλοι θεωρούν ότι υπάρχει DAL που συνδέεται στο interface. Αυτό δεν είναι αληθοφανές παράδειγμα - εκτός αν είναι τόσο "κουτή" η εφαρμογή που θέλεις να φτιάξεις. Κάπου πρέπει να υπάρχει και λίγο intelligence - το BI, ή business logic, ή όπως αλλιώς θες να το πεις:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Αν αυτό που σε ενδιαφέρει είναι να βγάζεις πίνακες σε οθόνες, έχεις πάρει λάθος δρόμο - χρησιμοποίησε το &lt;a href="http://www.asp.net/web-forms/videos/aspnet-dynamic-data"&gt;Dynamic Data&lt;/a&gt;, βάλε από πίσω LINQ2SQL ή EF, ή και ένα WCF Data Service, όλα γίνονται αυτόματα και δεν χρειάζεται να γράψεις τίποτα, θα βγάλεις οθόνες σε dt -&amp;gt; 0.&lt;/li&gt;&lt;li&gt;Αν σε ενδιαφέρει να γράψεις LOB εφαρμογή θα πρέπει μέσα στο πλάνο σου να υπάρχει και το business logic, καλό θα είναι να το δεις σε συνδιασμό με κάποιο pattern ανάπτυξης - αν το στοιχείο σου είναι τα ASP.NET WebForms, πρέπει να δεις κάτι που να σου ταιριάζει. πχ το ASP.NET Web Forms MVP (&lt;a href="http://webformsmvp.com/"&gt;http://webformsmvp.com/&lt;/a&gt;)&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>Απ: Εntitydatasource vs Objectdatasource</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70062.aspx</link><pubDate>Thu, 19 Apr 2012 16:47:12 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70062</guid><dc:creator>koslyr</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70062.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70062</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;Δεν υπάρχει λόγος να χρησιμοποιήσεις κανένα datasource.&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;Από διάφορα ενδεικτικά παραδείγματα που διάβασα για το EF, χρησιμοποιούσαν τα περισσότερα το EntityDataSource. &lt;br&gt;Από οτι κατάλαβα ως καλύτερο best practise για την υλοποίηση του DAL προτείνετε την χρήση του EF χωρίς το&amp;nbsp; EntityDataSource control και όλα τα CRUD operations να γίνονται manually μέσω του databinding απευθείας στα data-bound controls; &lt;br&gt;</description></item><item><title>Απ: Εntitydatasource vs Objectdatasource</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70045.aspx</link><pubDate>Tue, 17 Apr 2012 23:12:09 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70045</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70045.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70045</wfw:commentRss><description>Νίκο, μπορείς άνετα να κάνεις databinding επάνω στο List&amp;lt;string&amp;gt;. Δεν υπάρχει λόγος να χρησιμοποιήσεις κανένα datasource.</description></item><item><title>Απ: Εntitydatasource vs Objectdatasource</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70044.aspx</link><pubDate>Tue, 17 Apr 2012 22:47:39 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70044</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70044.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70044</wfw:commentRss><description>Αυτό που λες είναι η "κακή" μέθοδος. ΔΕΝ ΘΕΛΩ ΜΕ ΤΙΠΟΤΕ να γίνει κάτι σαν το Rent επειδή πείραξα κάποιες τιμές σε κάποιο grid.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Αν κάποιος θέλει να κάνει Rent το σωστό θα είναι να διαλέξει μία εντολή "Rent" η οποία θα καλέσει την αντίστοιχη μέθοδο Rent σε ένα αντικείμενο και εκεί πίσω θα εκτελέσει τη business λογική που απαιτείται (έλεγχος μοντέλου, δέσμευση, αποστολή επιβεβαίωσης στον πελάτη, δημιουργία work order για την προετοιμασία του αυτοκινήτου, ειδοποίηση στο λογιστήριο για την δημιουργία της χρέωσης, δημιουργία ασφαλιστήριου κλπ.)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Παρότι μπορείς με 5 τούμπες και ολίγη διαστροφή να χώσεις όλη αυτή τη λογική σε ένα UpdateMethod, είναι μία πολύ κακή τακτική.&lt;/div&gt;</description></item><item><title>Απ: Εntitydatasource vs Objectdatasource</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70043.aspx</link><pubDate>Tue, 17 Apr 2012 22:47:11 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70043</guid><dc:creator>nikolaosk</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70043.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70043</wfw:commentRss><description>Γενικότερα δεν τα χρησιμοποιώ τα datasources για τους λόγους που αναφέρεις.Όπως και να το κάνεις δεν συμφωνούν με τα software patterns.Χρησιμοποιώ το EF χωρίς τα datasources εκτός από ελάχιστα πολύ μικρά Projects.... &lt;br&gt;&lt;br&gt;Συμφωνώ με αυτό που λες εδώ&lt;br&gt;&lt;br&gt;"Το σίγουρο είναι ότι το EntityDataSource ΔΕΝ αφορά σε καμμία απολύτως 
περίπτωση το business logic, ούτε έχει να κάνει τίποτε με code reuse"&lt;br&gt;&lt;br&gt;το ίδιο λέω και εγώ στο δικό μου σχόλιο....&lt;br&gt;&lt;br&gt;&lt;br&gt;"&lt;span style="font-family:Tahoma, Arial, Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:2;text-align:left;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;Με το&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b style="font-family:Tahoma, Arial, Helvetica;font-size:12px;font-style:normal;font-variant:normal;letter-spacing:normal;line-height:normal;orphans:2;text-align:left;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;EntityDataSource&lt;/b&gt;&lt;span style="font-family:Tahoma, Arial, Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:2;text-align:left;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;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;μπορείς να υλοποιήσεις πολύ γρήγορα την web forms εφαρμογή σου. Στην ουσία γράφεις όλο το &lt;i&gt;Business logic &amp;amp; data access logic&lt;/i&gt; στις .aspx σελίδες σου...Όπως καταλαβαίνεις δεν υπάρχει καθόλου code reuse...&lt;/span&gt;"&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Μάλλον δεν ήμουν αρκετά σαφής. Δεν είναι ο καλύτερος τρόπος να κάνεις &lt;b&gt;code reuse&lt;/b&gt; (αν μπορείς να το πεις code reuse) χρησιμοποιώντας το &lt;b&gt;ObjectDataSource.&lt;/b&gt;&lt;b&gt; &lt;/b&gt;Αλλά π.χ σε αυτό &lt;a href="http://weblogs.asp.net/dotnetstories/archive/2011/08/20/using-objectdatasource-control-in-an-asp-net-application-to-fetch-data-from.aspx"&gt;εδώ&lt;/a&gt; το blog post μου δείχνω ότι σε σχέση με το &lt;b&gt;EntityDataSource/LinqDataSource &lt;/b&gt;μπορώ να "γράψω" ένα καλύτερο &lt;i&gt;"""""data access layer&lt;/i&gt;""""" με &lt;b&gt;ObjectDatasource &lt;/b&gt;&lt;br&gt;&lt;br&gt;Π.χ φτιάχνω ένα &lt;b&gt;DAL.cs&lt;/b&gt; class file και γράφω π.χ μια μέθοδο&lt;br&gt;&lt;br&gt;&lt;pre style="color:black;font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:2;text-align:-webkit-auto;text-indent:0px;text-transform:none;widows:2;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;font-family:Consolas;background-image:initial;background-attachment:initial;background-origin:initial;background-clip:initial;background-color:white;background-position:initial initial;background-repeat:initial initial;"&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span&gt;List&lt;/span&gt;&amp;lt;&lt;span&gt;String&lt;/span&gt;&amp;gt;&amp;nbsp;GetCities()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;using&lt;/span&gt;&amp;nbsp;(&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;ctx&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span&gt;PubsDataContext&lt;/span&gt;())
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;var&lt;/span&gt;&amp;nbsp;query&amp;nbsp;=&amp;nbsp;(&lt;span style="color:blue;"&gt;from&lt;/span&gt;&amp;nbsp;auth&amp;nbsp;&lt;span style="color:blue;"&gt;in&lt;/span&gt;&amp;nbsp;ctx.authors
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;select&lt;/span&gt;&amp;nbsp;auth.city).Distinct().ToList();
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&amp;nbsp;query;
 
 
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/pre&gt;&lt;br&gt;και μετά το δένω με το &lt;b&gt;ObjectDataSource&lt;/b&gt; την DAL κλάσση και τις μεθόδους της.Αν π.χ κάτι πάει λάθος ξέρω ότι πρέπει να ψάξω στο DAL.cs. είναι ένα καλύτερο ""seperation of concerns"".&lt;br&gt;&lt;br&gt;θα μου πεις, που είναι το code reuse? Σε ένα παραπλήσιο project μπορείς να κάνεις copy-paste το DAL.cs και να αλλάξεις π.χ την &lt;b&gt;GetCities&lt;/b&gt; Και να την κάνεις &lt;b&gt;GetOrders&lt;/b&gt;&amp;nbsp; και να αλλάξεις τον κώδικα κατάλληλα.&lt;br&gt;&lt;br&gt;Δεν είναι βέβαια αυτό ένα γνήσιο code reuse και δεν γίνεται implement με τον τρόπο αυτό....Υπάρχουν ασφαλώς πολύ καλύτεροι τρόποι να το κάνεις. δεν είμαι λοιπόν θιασώτης αυτής της λύσης....απλά μιλούσα για την σύγκριση &lt;b&gt;EntityDataSouce vs ObjectDataSource&lt;/b&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;br&gt;Δεν θα&amp;nbsp; διάλεγα πάντως (data sources) για να κάνω ένα σοβαρό enterprise application.Συμφωνώ ότι το EF δεν τα χρειάζεται και η δουλειά μας γίνεται με databinding.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description></item><item><title>Απ: Εntitydatasource vs Objectdatasource</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70037.aspx</link><pubDate>Tue, 17 Apr 2012 20:30:53 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70037</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70037.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70037</wfw:commentRss><description>Αυτή είναι η λογική του ότι τα Update και Delete methods έχουν να κάνουν με τη βάση. Στην ουσία έχουν να κάνουν με το control της φόρμας και τα commands που εκτελούνται εκεί. Θυμάσαι ένα thread που άνοιξε για crosstab editing σε Lightswitch; Δοκίμασα να δω αν μπορεί να γίνει σε ASP.NET (ναι - ναι, με datatables). Βεβαίως και ΔΕΝ χρησιμοποίησα database table με ορθογώνιες διαστάσεις (n x m) γιατί κάτι τέτοιο θα είχε ως αποτέλεσμα το table να μεγαλώνει ανεξέλεγκτα με κάθε νέα εγγραφή, για κάθε μία από τις διαστάσεις του (χώρια του ότι κάθε προσπάθεια "συντήρησης" της "ορθογωνιότητας" θα ήταν σκέτο μελόδραμα). Έφτιαξα, λοιπόν, ένα dummy datatable στο οποίο έκανα το crosstab και το "έδεσα" σ' ένα gridview. Το μόνο action που είχε νόημα πια ήταν το "Update" (για το control). Στη βάση τα πράγματα ήταν διαφορετικά. Αν στο κελί υπήρχε τιμή και αυτή άλλαζε, τότε είχαμε update του record. Αν στο κελί γινόταν διαγραφή τιμής, "εισάγοντας" ένα "κενό" string, τότε στη βάση το συγκεκριμένο record διαγραφόταν. Τέλος, αν σε κενό κελί γινόταν εισαγωγή τιμής, τότε στη βάση είχαμε insert. Το ObjectDataSource συμπεριφέρθηκε άψογα, ανάλογα με τις τιμές των παραμέτρων που περνούσα στην UpdateMethod (DeleteMethod δεν υπήρχε γιατί δεν είχε νόημα). Αυτό που περιγράφω, σε τι διαφέρει από το rent action; Αν κατάλαβα καλά, θέλεις με edit στο grid να κάνεις insert στη βάση (νέο rent). Αυτό είναι κάτι που μπορεί να γίνει.&lt;br&gt;&lt;br&gt;Βέβαια, η όλη συζήτηση έχει "ακαδημαϊκό" χαρακτήρα και όχι να πείσει για το αν η χρήση ή η μη χρήση του ObjectDataSource αποτελεί σωστή πρακτική. Δόξα τω θεώ, υπάρχουν πολλές εναλλακτικές προσεγγίσεις για το ίδιο πρόβλημα.&lt;br&gt;</description></item><item><title>Απ: Εntitydatasource vs Objectdatasource</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70034.aspx</link><pubDate>Tue, 17 Apr 2012 18:42:44 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70034</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70034.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70034</wfw:commentRss><description>Αυτά τα CRUD operations δεν "βρωμάνε" σε μία κλάση που σκοπό έχει να παρουσιαστεί στην οθόνη? Στο παράδειγμα της ενοικίασης αυτοκινήτου, τί νόημα θα είχε η UpdateMethod? Τα "απλά" signatures της ObjectDataSource στην πραγματικότητα κρύβουν DAL κώδικα τον οποίο απλά θα πρέπει να γράψεις εσύ, δεν θα στον δημιουργήσει το ίδιο το datasource.&amp;nbsp;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Όσο για το &amp;nbsp;"κάνεις ότι θες" δείχνει το μέγεθος του προβλήματος. Ενώ αυτό που θέλω να κάνω είναι μία ενοικίαση, η οποία κατά προτίμηση θα λέγεται Rent(), αναγκάζομαι να φτιάξω μία update, με ένα μάτσο παραμέτρους που δεν χρειάζομαι, η οποία θα πρέπει να "μαντεύει" ότι σε αυτή τη φόρμα θέλω να κάνω ενοικίαση και ΟΧΙ καταχώρηση νέου αυτοκινήτου. Ενώ θα μπορούσα να καθαρίσω με μία Car.Rent(Customer), θα αναγκαστώ να περάσω πράγματα μόνο και μόνο για να ικανοποιηθεί η UpdateMethod.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Για σκέψου η ενοικίαση να γίνεται καλώντας ένα web service αντί για update στη βάση. Θα πρέπει να φτιάξω καινούρια φόρμα? Γιατί?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Και το θέμα είναι ότι τίποτε από αυτά δεν είναι απαραίτητο. Το ObjectDataSource ΔΕΝ μου δίνει κάτι επιπλέον σε σχέση με το απλό data binding και της χρήση του οποιουδήποτε ORM.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Disclaimer: Όπως όλοι, κάθε φορά που βγαίνει ένα νέο datasource λέω κι εγώ να το χρησιμοποιήσω και μετά καταριέμαι την ώρα και τη στιγμή. Τελευταία γκάφα ήταν η χρήση του EntityDataSource σε Silverlight πριν κανα χρόνο, για να μιλήσω με WCF Data Services, επειδή βαριόμουν τις ασύγχρονες κλήσεις. Εκεί διαπίστωσα τί πλάκα έχει να συνδέσεις ένα Grid, pager και property grid πάνω σε ένα datasource, το οποίο αποφασίζει ξαφνικά να γυρίσει σε edit mode χωρίς να σου το πει. ΜΠΛΙΑΧ!&lt;/div&gt;</description></item><item><title>Απ: Εntitydatasource vs Objectdatasource</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70032.aspx</link><pubDate>Tue, 17 Apr 2012 18:12:30 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70032</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70032.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70032</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;&lt;div&gt;Ειδικά &amp;nbsp;το ObjectDataSource προσπαθούσε να κρύψει την έλλειψη (τότε) κάποιου ORM στο χώρο του .NET, παρέχοντας πρόσβαση σε "Business Objects" τα οποία κρύβαν πίσω τους τον data access κώδικα, αλλά έπρεπε να "βγάζουν" προς τα έξω κάποιες CRUD μεθόδους. Προφανώς δεν έπιασε ούτε αυτό, καθώς τελικά δεν διευκόλυνε σε κάτι. Το μανίκι είναι η λογική και ο data access κώδικας, όχι πως θα καλέσεις τα CRUD!&amp;nbsp;&lt;br&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;Άσε που σε σχέση με τα ORMs, το ObjectDataSource σε αναγκάζει να "βρωμίσεις" τις κλάσεις σου με κώδικα που δεν έχει θέση σε αυτές.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;&lt;br&gt;Παναγιώτη, μπορείς να το αναπτύξεις αυτό λίγο περισσότερο; Στο ObjectDataSource δεν είναι υποχρεωτικό να δηλώσεις data access κώδικα. Απλά signatures για &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.objectdatasource.selectmethod.aspx"&gt;SelectMethod&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.objectdatasource.updatemethod.aspx"&gt;UpdateMethod &lt;/a&gt;και &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.objectdatasource.deletemethod.aspx"&gt;DeleteMethod&lt;/a&gt;. Δεν είναι υποχρεωτικό να υπάρχει κάποιο query μέσα σ' αυτές. Αρκεί να περάσεις τις κατάλληλες παραμέτρους, οι οποίες πρέπει να ταιριάζουν με το sugnature, και κάνεις ό,τι θες, κατευθύνοντας το action εκεί που θες εσύ, χωρίς να χρειάζεται να "αντιγράψεις" τα παραδείγματα του MDSN. Γιατί, λοιπόν, να "βρομίσω" τις κλάσεις μου; Αντίθετα, το &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.entitydatasource.select.aspx"&gt;Select &lt;/a&gt;property του EntityDataSource περιμένει ένα Select statement, οπότε εδώ τα πράγματα είναι διαφορετικά.&lt;br&gt;</description></item><item><title>Απ: Εntitydatasource vs Objectdatasource</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70029.aspx</link><pubDate>Tue, 17 Apr 2012 17:36:25 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70029</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70029.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70029</wfw:commentRss><description>Η σύγκριση είναι λάθος, καθώς το Entity Framework (ή οποιοδήποτε άλλο ORM) δεν απαιτεί τη χρήση κανενός είδους "xxxDataSource". &amp;nbsp;Ουσιαστικά τα datasources είναι ένα anti-pattern (δηλ. πάρα πολύ κακή συνήθεια) η οποία προσπαθεί να περάσει στο χώρο του object-oriented programming τεχνικές που είχαν εφαρμογή μόνο στις εφαρμογές data entry της προ-προηγούμενης δεκατετίας (1990s).&amp;nbsp;&lt;div&gt;&amp;nbsp; &amp;nbsp; Τότε κύρια ανησυχία ήταν πως θα φτιάξεις πιο γρήγορα κάποιες data entry φόρμες.&amp;nbsp;&amp;nbsp;Τα διάφορα sources διευκολύνανε την επικοινωνία με τη βάση κρύβοντας τον τρόπο και την SQL από προγραμματιστές που δεν ήξεραν SQL.&amp;nbsp;Η κατάσταση βελτιώθηκε αρκετά γρήγορα με το .NET 2.0 και τα διάφορα datasources έχασαν την όποια αξία τους. Άσε που ο κώδικας που παρήγαν οι προγραμματιστές "που δεν ξέραν SQL" δημιουργούσε φοβερά προβλήματα σε όλα τα client-server συστήματα της εποχής και συνεχή κλειδώματα ακόμα και για λίγους χρήστες.&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; Αργότερα όμως εμφανίστηκε η ανάγκη να μπορείς να υλοποιήσεις πιο περίπλοκες συμπεριφόρες που αγγίζανε 2-3 διαφορετικές οντότητες (φαντάσου πχ. την ενοικίαση ενός αυτοκινήτου). Επιπλέον, ο αριθμός των χρηστών αυξήθηκε πέρα από τους .... 5 και προφανώς δεν μπορούσε κανείς να ισχυριστεί ότι θα μπορούσε να γράψει φόρμες αγνοώντας την πρόσβαση στη βάση.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ακόμα και τότε, τα datasources ήταν αποτυχία και κανείς δεν τα χρησιμοποιούσε σε σοβαρές εφαρμογές.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Τα διάφορα .NET datasources εμφανίστηκαν στις πρώτες εκδόσεις του .NET για να διευκολύνουν τη γρήγορη δημιουργία φορμών, στο στυλ των sources που χρησιμοποιούσε η VB6. Τω καιρώ εκείνω, το data binding ήταν πολύ πιο δύσκολο και φασαριόζικο.&amp;nbsp;Ουσιαστικά ήταν μία προσπάθεια να κρύψουν την απαιτούμενη SQL, τον ADO.ΝΕΤ κώδικα και το data binding. Εσύ "απλά" θα "σχεδίαζες" το query.&amp;nbsp;Η αποτυχία τους ήταν πλήρης, ακόμα και στην VB6, καθώς για να κάνεις κάτι πέρα από toy εφαρμογή χρειάζεται να ασχοληθείς σοβαρά και με την SQL και με τον κώδικα του data access. Επιπλέον, η ίδια η φιλοσοφία των datasources δημιούργησε προβλήματα, καθώς σε ανάγκαζαν να "χώσεις" θέματα χαμηλού επιπέδου μέσα στο ίδιο το UI.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ειδικά &amp;nbsp;το ObjectDataSource προσπαθούσε να κρύψει την έλλειψη (τότε) κάποιου ORM στο χώρο του .NET, παρέχοντας πρόσβαση σε "Business Objects" τα οποία κρύβαν πίσω τους τον data access κώδικα, αλλά έπρεπε να "βγάζουν" προς τα έξω κάποιες CRUD μεθόδους. Προφανώς δεν έπιασε ούτε αυτό, καθώς τελικά δεν διευκόλυνε σε κάτι. Το μανίκι είναι η λογική και ο data access κώδικας, όχι πως θα καλέσεις τα CRUD!&amp;nbsp;&lt;br&gt;Άσε που σε σχέση με τα ORMs, το ObjectDataSource σε αναγκάζει να "βρωμίσεις" τις κλάσεις σου με κώδικα που δεν έχει θέση σε αυτές.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Το EntityDataSource είναι μία προσπάθεια να δημιουργηθεί ένα πιο εξελιγμένο ObjectDatasource , πάνω από ένα ORM, το Entity Framework. Επιλέγεις τις οντότητες σου, άντε δίνεις και το LINQ query, και αυτό φτιάχνει τις αντίστοιχες κλήσεις στο ORM. Χονδρικά είναι ένα ObjectDataSource στο οποίο "δεν χρειάζεται" να γράψεις τα CRUD. Άλλη μία αποτυχία γιατί:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Τα αντικείμενα ΔΕΝ έχουν σχέση με το CRUD αλλά να παρέχουν μεθόδους ανωτέρου επιπέδου. Φαντάσουν ένα αντικείμενο "Αυτοκίνητο" το οποίο περιέχει μία μέθοδο που λέγεται "Ενοικίαση".&lt;/li&gt;&lt;li&gt;Σου πετάει το ORM μέσα στη φόρμα&lt;/li&gt;&lt;li&gt;Σε περιορίζει στα queries που μπορείς να κάνεις&lt;/li&gt;&lt;li&gt;Σε περιορίζει στο είδος των validation ή άλλων ενεργειών που θέλεις να κάνεις. Άλλο ένα action που λέει "ενοικίαση" και άλλο τα πολλαπλά updates που απαιτούνται σε διάφορες οντότητες για να υλοποιηθεί η ενοικίαση ενός αυτοκινήτου.&lt;/li&gt;&lt;li&gt;Ουσιαστικά αντιστρέφει (διαστρέφει θα έλεγα) τη λειτουργία του ORM. Εκεί που κατάφερες να μεταφέρεις αλλού τον data access κώδικα, σου τον ξαναφέρνει στη μούρη!&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Η κατάληξη είναι ότι δεν χρειάζεσαι κανένα datasource. Όλα τα data controls του ASP.NET υποστηρίζουν data binding σε αντικείμενα, οπότε από τη στιγμή που έχεις φορτώσει το αντικείμενο σου, μπορείς να το δείξεις.&amp;nbsp;&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;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Νίκο, νομίζω έχεις μπερδέψει τί κάνει το Entity Framework και τί κάνουν τα ObjectDataSource και EntityDataSource.&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Το σίγουρο είναι ότι το EntityDataSource ΔΕΝ αφορά σε καμμία απολύτως περίπτωση το business logic, ούτε έχει να κάνει τίποτε με code reuse. Επίσης, το ObjectDatasource είναι εντελώς περιττό από τη στιγμή που υπάρχει data binding.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Η κουβέντα για layers και MVC pattern πάντως δεν έχει καμμία απολύτως θέση σε αυτή τη συζήτηση, καθώς αφορά τη σχεδίαση μίας εφαρμογής σε πολύ ανώτερο επίπεδο από το data access. Σα να λέμε όχι μήλα και μηλόπιτα, αλλά μήλα και σπάτουλα ...&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description></item><item><title>Απ: Εntitydatasource vs Objectdatasource</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70017.aspx</link><pubDate>Sun, 15 Apr 2012 04:19:19 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70017</guid><dc:creator>nikolaosk</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70017.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70017</wfw:commentRss><description>&lt;br&gt;&lt;br&gt;&lt;br&gt;Με το &lt;b&gt;EntityDataSource&lt;/b&gt; μπορείς να υλοποιήσεις πολύ γρήγορα την web forms εφαρμογή σου. Στην ουσία γράφεις όλο το Business logic &amp;amp; data access logic στις .aspx σελίδες σου...Όπως καταλαβαίνεις δεν υπάρχει καθόλου code reuse....Εϊναι λύση για πολύ μικρές εφαρμογές σχετικά απλές που δεν θα "μεγαλώσουν" πολύ στο μέλλον...Με τον τρόπο αυτό δεν γράφεις τον κώδικα σε layers/tiers.Ένας τρόπος να γράψεις τον κώδικα σου με καλύτερο τρόπο είναι αντί για το &lt;b&gt;EntityDataSource&lt;/b&gt; control να χρησιμοποιήσεις το &lt;b&gt;ObjectDataSource&lt;/b&gt; control.Με τον τρόπο αυτό γράφεις εσύ τον κώδικα για το DAL. Γράφεις τον κώδικα για το select,insert,update,delete αλλά μπορείς (επειδή γράφεις εσύ τον κώδικα) να γράψεις στην delete() μέθοδο ότι κώδικα θέλεις π.χ όταν κάνεις delete ένα row αυτό να πάει σε ένα άλλο &lt;b&gt;&lt;i&gt;Archive&lt;/i&gt;&lt;/b&gt; πίνακα.&amp;nbsp; &lt;br&gt;&lt;br&gt;Αν θες να δεις ένα blog post μου που υλοποιώ μια απλή εφαρμογή με LINQ to SQL &amp;amp; το &lt;b&gt;ObjectDataSource&lt;/b&gt; control δες &lt;a href="http://weblogs.asp.net/dotnetstories/archive/2011/08/20/using-objectdatasource-control-in-an-asp-net-application-to-fetch-data-from.aspx"&gt;εδώ&lt;/a&gt; . &lt;a href="http://weblogs.asp.net/dotnetstories/archive/2009/10/23/how-to-build-a-simple-asp-net-application-with-c-and-entity-framework.aspx"&gt;Εδώ&lt;/a&gt; μπορείς να δεις ένα blog post μου πως χρησιμοποιήσεις το&amp;nbsp;  &lt;b&gt;EntityDataSource &lt;/b&gt;control&lt;b&gt;.&lt;/b&gt;&lt;br&gt;&lt;br&gt;Αν θες να δεις πως χειριζόμαστε &lt;b&gt;CRUD&lt;/b&gt; operations στις ASP.Νet MVC applications , σου συνιστώ ανεπιφύλακτα να δεις αυτά &lt;a href="http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc"&gt;εδώ&lt;/a&gt; τα tutorials. &amp;nbsp; &lt;br&gt;&lt;br&gt;To &lt;b&gt;MVC pattern&lt;/b&gt; υλοποιεί εκ φύσεως πολύ καλύτερα αυτό που λέμε seperation of concerns. Αν θες να δεις ένα απλό παράδειγμα δες &lt;a href="http://weblogs.asp.net/dotnetstories/archive/2011/08/07/retrieving-data-from-an-sql-server-database-in-an-mvc-3-application.aspx"&gt;εδώ&lt;/a&gt; . &lt;br&gt;</description></item><item><title>Απ: Εntitydatasource vs Objectdatasource</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70016.aspx</link><pubDate>Sun, 15 Apr 2012 03:09:09 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70016</guid><dc:creator>koslyr</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70016.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70016</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;Αν χρησιμοποιήσεις ένα ώριμο OR Mapper (NHibernate, Entity Framework) γλυτώνεις εντελώς τη δημιουργία του CRUD κώδικα. Αν χρησιμοποιήσεις μετά τις δυνατότητες templating και scaffolding που σου παρέχουν διάφορα frameworks αλλά και αυτά τα ίδια τα built-in ASP.NET controls γλυτώνεις και όλο τον επαναλαμβανόμενο κώδικα στο UI. Μάλιστα το Dynamic Data στο ASP.NET και η αντίστοιχη δυνατότητα στο MVC σου επιτρέπουν να δημιουργήσεις πολύ εύκολα UI από ένα entity model που έχει δημιουργηθεί με Entity Framework ή NHibernate&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;&lt;br&gt;Ανάμεσα στις δυο υλοποιήσεις&amp;nbsp; (Εntitydatasource ή Objectdatasource) για το DAL, ποία χρησιμοποιείται πλέον περισσότερο; &lt;br&gt;Από ότι έχω καταλάβει με το&amp;nbsp; Εntitydatasource γλιτώνεις το όλο κομμάτι του CRUD κώδικα, αλλά δεν γνωρίζω με ποιο ενδεχομένως trade-off συγκριτικά με το Objectdatasource.&lt;br&gt;Προς το παρον στο πλαίσο των Web-Forms προσπαθώ να διαπιστώσω τα pros&amp;amp;cons σχετικά με το&amp;nbsp; Εntitydatasource vs Objectdatasource.&lt;br&gt;Για την υλοποίηση Web Apps μέσω MVC στο θέμα του DAL υφίστανται ξανά οι ίδιοι προβληματισμοί ή έχουν πιο ξεκάθαρα patterns για την εκτέλεση του DAL;&amp;nbsp;</description></item><item><title>Απ: Best Practise για GRUD operation</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70004.aspx</link><pubDate>Fri, 13 Apr 2012 04:44:11 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70004</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70004.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70004</wfw:commentRss><description>Ανοίξαμε μεγάλο θέμα. Προσωπικά, θέλω να έχω τον έλεγχο πάνω στα T-SQL scripts. Το μεγαλύτερο πρόβλημα για μένα είναι το "βάθος" του &lt;a href="http://blogs.msdn.com/b/adonet/archive/2010/08/17/performance-considerations-when-using-tpt-table-per-type-inheritance-in-the-entity-framework.aspx"&gt;inheritance&lt;/a&gt;. Η υλοποίηση με views για τα selects και stored procedures για updates, inserts και deletes ταιριάζει περισσότερο στην "ιδιοσυγκρασία" μου. Συνεχίζω να θεωρώ τα datasets ως το καλύτερο κομμάτι του ADO.NET μέχρι σήμερα. Υπάρχουν πολλοί τομείς πάνω στους οποίους η Microsoft θα μπορούσε να τα βελτιώσει. Για παράδειγμα, η παρούσα υλοποίηση περιέχει πολύ presentation κώδικα που είναι περιττός στον server. Θα μπορούσαμε να έχουμε ένα lite datatable object για τον server και το γνωστό datatable για τον client. Έχω σκεφτεί κι άλλα πολλά, αλλά η Microsoft τα έχει εγκαταλείψει...&lt;br&gt;</description></item><item><title>Απ: Best Practise για GRUD operation</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70003.aspx</link><pubDate>Fri, 13 Apr 2012 04:11:47 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70003</guid><dc:creator>nikolaosk</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70003.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70003</wfw:commentRss><description>θα δω αυτά που μου προτείνεις.Oμολογώ ότι δεν τα έχω δει και δεν μπορώ να κάνω σύγκριση.Εκτιμώ ότι είναι έτσι όπως τα λες.&amp;nbsp; Πλέον χρησιμοποιώ το EF αρκετά ειδικά τώρα που έχει ωριμάσει σαν framework και υποστηρίζει όλα τα data types καθώς και το Code First Approach.&lt;br&gt;&lt;br&gt;Έχω κάνει τα τελευταία 2-3 χρόνια projects χρησιμοποιώντας το Enterprise Library και γενικά μου έλυσε τα χέρια.Θα δω το log4net για ένα νέο project που έχω. &lt;br&gt;</description></item><item><title>Απ: Best Practise για GRUD operation</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70002.aspx</link><pubDate>Fri, 13 Apr 2012 04:02:36 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70002</guid><dc:creator>nikolaosk</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70002.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70002</wfw:commentRss><description>Αν θες νας δεις μια μικρή εφαρμογή (asp.net web forms) που είχε αναπτυχθεί σαν sample application στο asp.net website ,πάτα &lt;a href="http://code.msdn.microsoft.com/ASPNET-Web-Forms-97f8ee9a"&gt;εδώ&lt;/a&gt; ,&lt;br&gt;&lt;br&gt;Μπορείς να κατεβάσεις το project αυτό τοπικά και να δεις πως υλοποιούνται τα CRUD operations. Χρησιμοποιεί το Database First model.&lt;br&gt;</description></item><item><title>Απ: Best Practise για GRUD operation</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/70001.aspx</link><pubDate>Fri, 13 Apr 2012 03:35:11 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:70001</guid><dc:creator>koslyr</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/70001.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=70001</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;Αν χρησιμοποιήσεις ένα ώριμο OR Mapper (NHibernate, Entity Framework) γλυτώνεις εντελώς τη δημιουργία του CRUD κώδικα. Αν χρησιμοποιήσεις μετά τις δυνατότητες templating και scaffolding που σου παρέχουν διάφορα frameworks αλλά και αυτά τα ίδια τα built-in ASP.NET controls γλυτώνεις και όλο τον επαναλαμβανόμενο κώδικα στο UI. Μάλιστα το Dynamic Data στο ASP.NET και η αντίστοιχη δυνατότητα στο MVC σου επιτρέπουν να δημιουργήσεις πολύ εύκολα UI από ένα entity model που έχει δημιουργηθεί με Entity Framework ή NHibernate&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;Παναγιώτη για web application με web forms έχεις να μας δώσεις κάποιο αντιπροσωπευτικο link για την υλοποίηση που αναφέρεις με το Entity Framework ή NHibernate. &lt;br&gt;Θεωρεις πλέον ότι πρέπει να χρησιμοποιούμε αυτές τις τεχνικές για το CRUD κώδικα; &lt;br&gt;Επίσης θεωρείς σωστή την προσσέγιση να καλούνται όλα αυτά τα GRUD operation (ανεξάρτητα με τον τρόπο που υλοποιούνται) μέσω Ajax Call και όχι με τον κλασικο τρόπο;&lt;br&gt;</description></item></channel></rss>