Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Μεταφορά κώδικα από το UI στην DB

Îåêßíçóå áðü ôï ìÝëïò dimik. Τελευταία δημοσίευση από το μέλος dimik στις 08-07-2008, 02:00. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  04-07-2008, 13:58 43245

    Μεταφορά κώδικα από το UI στην DB

    Καλησπέρα σε όλους,

    Έχω ένα πρόβλημα/προβληματισμό σχετικά με μια γενικότερη τακτική για αναζήτηση σε πίνακες με φίλτρα...
    Για να γίνω πιό κατανοητός:

    Έχω ένα TextBox και ένα DropDownList. Ο χρήστης στο TextBox μπορεί να γράψει ότι επιθυμεί και από το DropDownList μπορεί να επιλέξει ποιό πεδίο θα ψάξει.
    Δηλαδή: Ας πούμε ότι έχουμε τον πίνακα Clients που έχει ένα σωρό πεδία... Καταλαβαίνετε τώρα...
    Ο χρήστης λοιπόν διαλέγει από τη λίστα το πεδίο "Διεύθυνση" και γράφει στο TextBox τη λέξη "Σόλωνος"...

    Ο κώδικας από πίσω φτιάχνει δυναμικά το query, δηλαδή κάτι σαν.... " Select * from Clients where address like '%Σόλωνος%' " ...

    Αυτό που θέλω λοιπόν είναι να βγάλω αυτόν τον τρόπο υλοποίησης και να χρησιμοποιώ Stored Procedures...

    Ξέρει κανείς ποιά λογική πρέπει να χρησιμοποιηθεί;;;

    Επίσης, αν είχαμε κι άλλο ένα ζευγάρι TextBox-DropDownList γίνεται πιό πολύπλοκο το θέμα...

    Ευχαριστώ.

    Σύνταξη στα 18,
    Στράτευση στα 100.
  •  04-07-2008, 18:57 43261 σε απάντηση της 43245

    Απ: Μεταφορά κώδικα από το UI στην DB

    To είχα κάνει κάποτε με αυτό εδώ: http://www.dotnetzone.gr/cs/forums/thread/869.aspx (παίζει και για πολλαπλά κριτήρια). Από τότε μεγάλωσα, σοβαρεύτηκα και υποσχέθηκα στον εαυτό μου να κόψω το αλκοόλ. Big Smile

    Βέβαια, όταν έκανα αυτά τα κόλπα τότε, δεν είχα ανακαλύψει τον υπέροχο κόσμο των ORMs...

     


    Vir prudens non contra ventum mingit
  •  04-07-2008, 19:41 43262 σε απάντηση της 43261

    Απ: Μεταφορά κώδικα από το UI στην DB

    Πλάκα-πλάκα, ένα απλό LINQ to SQL query κάνει άνετα την ίδια δουλειά, σου φτιάχνει και αυτόματα παραμετρικό dynamic sql query.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  06-07-2008, 03:03 43278 σε απάντηση της 43261

    Απ: Μεταφορά κώδικα από το UI στην DB

    KelMan, σε ευχαριστώ πολύ για την απάντηση. Η μέθοδος που προτείνεις (την είχα δει παλαιότερα αλλά δεν την θυμόμουνα - γιατί δεν την είχα χρησιμοποιήσει) είναι πράγματι αυτό που έψαχνα.

    Επίσης τα ORMs που αναφέρεις είναι πράγματι πολύ πολύ ενδιαφέροντα. Θα κοιτάξω αναλυτικότερα πως λειτουργούν και πώς θα μπορούσα να τα χρησιμοποιήσω.

    Είδα κάπως βιαστικά το NHibernate μιας και ήταν το πρώτο open source που βρήκα κάνοντας μια αναζήτηση. Αναρωτιέμαι για θέματα σχετικά με τις επιδόσεις που έχει μια εφαρμογή με ORMs καθώς και το κατά πόσο μπορείς να εκτελέσεις πολύπλοκα queries. Δηλαδή ανησυχώ πως θα αντικαταστήσω πολύπλοκα stored procedures ή inline queries. Βέβαια θα έπρεπε πρώτα να το ψάξω περισσότερο πριν ρωτήσω κάτι τόσο γενικό αλλά μιας και έχεις ασχοληθεί πολύ με αυτά ίσως θα μπορούσες να μου δώσεις μερικές απαντήσεις.

    Επίσης μια ακόμη ερώτηση: Παραθέτω από το documentation του NHibernate το εξής:

    IList cats = session.CreateSQLQuery(
    "SELECT {cat}.ID AS {cat.Id}, {cat}.SEX AS {cat.Sex}, " +
    "{cat}.MATE AS {cat.Mate}, {cat}.SUBCLASS AS {cat.class}, ... " +
    "FROM CAT {cat} WHERE ROWNUM<10",
    "cat",
    typeof(Cat)
    ).List()
    Νόμιζα ότι σκοπός μας είναι να ξεχωρίσουμε το DB layer από το UI. Τώρα βλέπω μια νέα τεχνική, object oriented, αλλά πάλι βλέπω queries μέσα στον κώδικα... Έχω μπερδευτεί... Τι πρέπει να κάνουμε τελικά; Τι είναι το σωστό;

    Ευχαριστώ πολύ :-)

    Σύνταξη στα 18,
    Στράτευση στα 100.
  •  07-07-2008, 22:22 43322 σε απάντηση της 43278

    Απ: Μεταφορά κώδικα από το UI στην DB

    To ότι ένα ORM σου δίνει τη δυνατότητα να κάνεις "low-level" κλήσεις προς τη βάση δεν σημαίνει ότι είναι ο τυπικός τρόπος λειτουργίας του. Συνήθως αυτό γίνεται σε ειδικές περιπτωσεις, όταν δεν σε καλύπτει το μοντέλο που σου παρέχει. Συνήθως δεν δουλεύεις με αυτόν τον τρόπο.

    Από εκεί και πέρα, δεν υπάρχει "πρέπει". Απλά η εξέλιξη σε οδηγεί σε λύσεις που θα σε βοηθήσουν στο να έχεις ένα ομαλότερο κύκλο ζωής εφαρμογής. Εφαρμογές πάντα έβγαιναν στην παραγωγή και data access κάναμε με DAO, με RDO, με ADO, με ADO.NET και DataSets και τώρα κάνουμε με Linq To SQL, Entity Framework και ORMs. Δεν είναι ότι αν δεν είχαμε ORMs δεν θα μπορούσαμε να φτιάξουμε κάποια εφαρμογή της προκοπής. Απλά, έρχεται η στιγμή όπου δεν θες πλέον να γράφεις τον ίδιο και τον ίδιο κώδικα, όπου θες να επαναχρησιμοποιείς τον κώδικα σου χωρίς χαζά copy/paste, όπου θα μπορείς εύκολα να τεστάρεις την εφαρμογή και εύκολα να ανταποκρίνεσαι σε αλλαγές που σου ζητάει ο πελάτης χωρίς να χρειάζεται να κάνεις rewire το σύμπαν. Δες κι αυτή τη κουβέντα, λίγο-πολύ αφορά στο ίδιο θέμα http://www.dotnetzone.gr/cs/forums/thread/43290.aspx

    Ως προς το performance, δεν έχω κάνει ούτε έχω δει κάποιο benchmark, ωστόσο δεν πιστεύω ότι θα υπάρχουν τρομερές διαφορές ανάμεσα στο να γράψεις εσύ τον data access κώδικα και να χρησιμοποιήσεις κάποιο ORM. Κατ' εμέ δεν είναι εκεί το ζητούμενο. Στην πλειοψηφία των εφαρμογών σε ενδιαφέρουν αυτά που αναφέρω παραπάνω καθώς "κοστίζουν" πολύ περισσότερο από το h/w. Στην τελική, η εφαρμογή σου πάντοτε μπορεί να γίνει scale-up ενώ αν έχει κατάλληλη αρχιτεκτονική, θα μπορεί να γίνει και scale-out.

     


    Vir prudens non contra ventum mingit
  •  08-07-2008, 02:00 43326 σε απάντηση της 43322

    Απ: Μεταφορά κώδικα από το UI στην DB

    Γεια σου KelMan,

    Η απάντησή σου είναι τραγικά ενδιαφέρουσα και πιστεύω ότι καταλαβαίνω τι εννοείς.

    Σε ευχαριστώ πολύ !!!


    Σύνταξη στα 18,
    Στράτευση στα 100.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems