<?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>Πρώτα Βήματα - Γλώσσες προγραμματισμού</title><link>https://www.dotnetzone.gr:443/cs/forums/74/ShowForum.aspx</link><description>Τα πρώτα βήματα στις γλώσσες VB6, VB.NET, και C#</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: pattern για data class</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/56981.aspx</link><pubDate>Sun, 07 Feb 2010 19:51:35 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:56981</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/56981.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=74&amp;PostID=56981</wfw:commentRss><description>&lt;P&gt;Το System.ComponentModel namespace του .ΝΕΤ&amp;nbsp;Framework προσφέρει το &lt;A href="http://msdn.microsoft.com/en-us/library/system.componentmodel.dataobjectattribute.aspx"&gt;DataObjectAttribute&lt;/A&gt; που σε συνδιασμό με το &lt;A href="http://msdn.microsoft.com/en-us/library/system.componentmodel.dataobjectfieldattribute.aspx"&gt;DataObejctFieldAttribute&lt;/A&gt; και το &lt;A href="http://msdn.microsoft.com/en-us/library/system.componentmodel.dataobjectmethodattribute.aspx"&gt;DataObjectMethodAttribute&lt;/A&gt; επιτρέπουν να "στολίσεις" κλάσεις έτσι ώστε να μπορούν να χρησιμοποιηθούν από το &lt;A href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.objectdatasource.aspx"&gt;ObjectDataSource&lt;/A&gt; web control, για να "γεμίσεις" γρήγορα τα DataList, DetailsView, FormView, GridView. ListView και DataRepeater web controls, να "ενεργοποιήσεις" paging, sorting, editing, και όλα αυτά χωρίς έξτρα κώδικα για το databinding.&lt;/P&gt;
&lt;P&gt;Πχ αν υποθέσουμε ότι ο παρακάτω κώδικας είναι μέρος ενός Data Class, που "υλοποιεί" το &lt;A href="http://martinfowler.com/eaaCatalog/repository.html"&gt;Repository&lt;/A&gt; pattern:&lt;/P&gt;
&lt;P&gt;
&lt;TABLE style="BORDER-BOTTOM:#e5e5e5 1px solid;BORDER-LEFT:#e5e5e5 1px solid;BACKGROUND-COLOR:#f2f2f2;BORDER-TOP:#e5e5e5 1px solid;BORDER-RIGHT:#e5e5e5 1px solid;" border=0 cellSpacing=0 cellPadding=0 width="100%"&gt;

&lt;TR style="LINE-HEIGHT:normal;VERTICAL-ALIGN:top;"&gt;
&lt;TD style="TEXT-ALIGN:right;WIDTH:40px;"&gt;&lt;PRE style="PADDING-BOTTOM:2px;MARGIN:0px;PADDING-LEFT:2px;PADDING-RIGHT:2px;FONT-FAMILY:courier new;COLOR:gray;FONT-SIZE:11px;BORDER-RIGHT:#e7e7e7 1px solid;PADDING-TOP:2px;"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 &lt;/PRE&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;PRE style="PADDING-BOTTOM:2px;MARGIN:0px;PADDING-LEFT:8px;PADDING-RIGHT:2px;PADDING-TOP:2px;"&gt;&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:black;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;    &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;class&lt;/SPAN&gt; ProductsDataSource
    {
        AdventureWorksLTEntities _ctx;

        &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;public&lt;/SPAN&gt; ProductsDataSource()
        {

        }

        &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;public&lt;/SPAN&gt; DataServiceCollection&amp;lt;Product&amp;gt; FetchAll()
        {
            _ctx &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:red;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;new&lt;/SPAN&gt; AdventureWorksLTEntities(&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;new&lt;/SPAN&gt; Uri(&lt;SPAN style="BACKGROUND-COLOR:#e4e4e4;FONT-FAMILY:Courier New;COLOR:#666666;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;"http://localhost:55867/AdvWorksLTDataService.svc"&lt;/SPAN&gt;));
            DataServiceCollection&amp;lt;Product&amp;gt; products &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:red;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;new&lt;/SPAN&gt; DataServiceCollection&amp;lt;Product&amp;gt;(_ctx);
            products.Load(from p &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;in&lt;/SPAN&gt; _ctx.Product
                          select p);
            &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;return&lt;/SPAN&gt; products;
        }
    }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;Για να χρησιμοποιήσεις την παραπάνω κλάση, θα πρέπει να γράψεις έξτρα κώδικα σε κάθε σελίδα που θέλεις να προσπελάσεις δεδομένα από την βάση και να γεμίσεις ένα control.&lt;/P&gt;
&lt;P&gt;Αν η παραπάνω κλάση μετασχηματιστεί σε:&lt;/P&gt;
&lt;P&gt;
&lt;TABLE style="BORDER-BOTTOM:#e5e5e5 1px solid;BORDER-LEFT:#e5e5e5 1px solid;BACKGROUND-COLOR:#f2f2f2;BORDER-TOP:#e5e5e5 1px solid;BORDER-RIGHT:#e5e5e5 1px solid;" border=0 cellSpacing=0 cellPadding=0 width="100%"&gt;

&lt;TR style="LINE-HEIGHT:normal;VERTICAL-ALIGN:top;"&gt;
&lt;TD style="TEXT-ALIGN:right;WIDTH:40px;"&gt;&lt;PRE style="PADDING-BOTTOM:2px;MARGIN:0px;PADDING-LEFT:2px;PADDING-RIGHT:2px;FONT-FAMILY:courier new;COLOR:gray;FONT-SIZE:11px;BORDER-RIGHT:#e7e7e7 1px solid;PADDING-TOP:2px;"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 &lt;/PRE&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;PRE style="PADDING-BOTTOM:2px;MARGIN:0px;PADDING-LEFT:8px;PADDING-RIGHT:2px;PADDING-TOP:2px;"&gt;&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:black;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;    [DataObject]
    &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;public&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;class&lt;/SPAN&gt; ProductsDataSource
    {
        AdventureWorksLTEntities _ctx;

        &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;public&lt;/SPAN&gt; ProductsDataSource()
        {

        }

        [DataObjectMethod(DataObjectMethodType.Select, &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;true&lt;/SPAN&gt;)]
        &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;public&lt;/SPAN&gt; DataServiceCollection&amp;lt;Product&amp;gt; FetchAll()
        {
            _ctx &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:red;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;new&lt;/SPAN&gt; AdventureWorksLTEntities(&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;new&lt;/SPAN&gt; Uri(&lt;SPAN style="BACKGROUND-COLOR:#e4e4e4;FONT-FAMILY:Courier New;COLOR:#666666;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;"http://localhost:55867/AdvWorksLTDataService.svc"&lt;/SPAN&gt;));
            DataServiceCollection&amp;lt;Product&amp;gt; products &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:red;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;=&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;new&lt;/SPAN&gt; DataServiceCollection&amp;lt;Product&amp;gt;(_ctx);
            products.Load(from p &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;in&lt;/SPAN&gt; _ctx.Product
                          select p);
            &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;return&lt;/SPAN&gt; products;
        }
    }&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;Τότε μπορείς να την χρησιμοποιήσεις σε συνδιασμό με το ObjectDataSource control, και να μην γράψεις καθόλου αυτό το κώδικα...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;George J.&lt;BR&gt;&lt;/P&gt;</description></item><item><title>Απ: pattern για data class</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/56978.aspx</link><pubDate>Sun, 07 Feb 2010 05:45:08 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:56978</guid><dc:creator>infoCENTER</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/56978.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=74&amp;PostID=56978</wfw:commentRss><description>&lt;P&gt;Μάλλον τα μπέρδεψες λίγο με την ορολογία. &lt;/P&gt;
&lt;P&gt;Βασικά δεν ψάχνεις για pattern αλλά για Application Block το οποίο να κάνει την δουλειά που ζητάς. Πολλές φορές, σχεδόν πάντα δηλαδή αυτά τα Application Blocks χρησιμοποιούν διάφορα patterns με σκοπό την καλύτερη οργάνωση και σχεδιασμό του κώδικα. Οπότε εσύ ψάχνεις ένα Application Block που να κάνει&amp;nbsp;αυτά που ανέφερες και όχι να σχεδιάσεις κάποιο από την αρχή. οπότε θα χρειαζόσουν κάποιο Pattern.&lt;/P&gt;
&lt;P&gt;Όπως ίσως γνωρίζεις τον τελευταίο καιρό, έχει δηλαδή χρόνο και... έκανε την εμφάνισή του το LINQ To SQL και πιο μετά το Entity Framework τα οποία περιέχουν κώδικα&amp;nbsp;αλληλεπίδρασης με την βάση και όχι μόνο. Οι γνώμες πάνω στις τεχνολογίες αυτές είναι διαφορετικές και για το αν είναι είναι έτοιμες να παίξουν τον ρόλο για τον οποίον δημιουργήθηκαν. Αξίζει όμως&amp;nbsp;να ρίξεις μία ματιά σε αυτά&amp;nbsp;για&amp;nbsp;να δεις&amp;nbsp;που θα πάνε τα πράγματα και πια μορφή θα έχουν. &lt;/P&gt;
&lt;P&gt;Από την άλλη δεν σου μένουν και πολλές επιλογές. Είτε θα φτιάξεις ένα μόνο σου είτε χρησιμοποίησε το Data Access Application Block της Microsoft. Αρκετά καλό με μεγάλη κοινότητα να το υποστηρίζει και το κυριότερο δωρεάν. &lt;/P&gt;</description></item><item><title>Απ: pattern για data class</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/56973.aspx</link><pubDate>Sat, 06 Feb 2010 20:29:18 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:56973</guid><dc:creator>xabikos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/56973.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=74&amp;PostID=56973</wfw:commentRss><description>Αυτό που ζητάς αν δεν κάνω λάθος είναι το λεγόμενο &lt;a href="http://en.wikipedia.org/wiki/Data_access_object"&gt;DAO &lt;/a&gt;(Data Access Object). Βέβαια δεν είναι τόσο από όπως φαντάζεσαι μιας και για να πετύχεις όλα αυτά που περιγράφεις πρέπει να συνδυαστούν πολλά πράγματα μεταξύ τους. Πρέπει για παράδειγμα να δεις τι γίνεται με τα transactions. Βέβαια μπορείς να ξεκινήσεις από κάτι απλό και μετά να το προχωρήσεις. &lt;br&gt;</description></item><item><title>pattern για data class</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/56971.aspx</link><pubDate>Sat, 06 Feb 2010 17:43:20 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:56971</guid><dc:creator>Bill </dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/56971.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=74&amp;PostID=56971</wfw:commentRss><description>&lt;br&gt;&amp;nbsp;Υπάρχει κανένα standar pattern για να έχουμε μια κλάση με την οποία θα πέρνουμε δεδομένα απο την βάση θα κάνουμε update , delete,insert όλα σε ένα και νυκοκυρεμένα (ωστε να μην ξανα ορίζω sqldataAdapters,sqlconnections,...sqlCommands απλά να δίνω το sql statement μου και να τα κάνει όλα) ? Και αυτή η κλάση θα είναι προσβάσιμη απο παντού πχ static class. &lt;br&gt;</description></item></channel></rss>