
Έχω ψάξει σε NHibernate πρόσφατα και προσπαθούν να μάθουν τα ins και outs. Ένα πράγμα που παρατήρησα σε μερικά άρθρα ήταν η χρήση των BuildSchema να δημιουργήσει μια ελέγξιμη βάση δεδομένων.


Το συγκεκριμένο παράδειγμα που χρησιμοποιείται SqlLite με τη βάση δεδομένων. Μπορεί να είναι αξιόπιστος BuildSchema για τη δημιουργία της βάσης δεδομένων σας ή είναι ακόμα καλύτερο να δημιουργήσετε το δικό σας σχήμα βάσης δεδομένων στο πρότυπο τρόπο; Στην περίπτωσή μου, χρησιμοποιώντας το SQL Server Management Studio.


**Ενημέρωση:** 
Και οι δύο απαντήσεις φαίνονται να δώσει έγκυρες συμβουλές, δεν θα έλεγα αυτή η ερώτηση έχει μια «απάντηση» γι 'αυτό δεν θα σηματοδοτήσει μια ιδιαίτερα απάντηση ως οριστική. Ωστόσο, ψήφισα δυο σας για τις συμβουλές σας.


Η γενική ιδέα φαίνεται να είναι η χρήση BuildSchema στην πρώιμη ανάπτυξη πριν από το σχεδιασμό της βάσης δεδομένων εγκαθίσταται στη συνέχεια να προχωρήσουμε στο να δημιουργήσει / αλλάξει δέσμες ενεργειών SQL κατά τη χρήση του ελέγχου έκδοσης.

 
Πόσο καλή είναι BuildSchema NHibernate του;
===========================================



Προσπαθώντας να κρατήσει όσο πιο κοντά σε μια μεθοδολογία σχεδιασμού τομέα με γνώμονα το δυνατόν περισσότερο, μπορώ να χρησιμοποιήσω NHibernate να χτίσει το σχήμα μου κατά τη διάρκεια της ανάπτυξης. Μόλις η εφαρμογή έχει φτάσει σε κάποιο επίπεδο σταθερότητας (το μοντέλο τομέα καρδάρα έχει επιβραδυνθεί σημαντικά) ή ένα δελτίο ορόσημο έχει επιτευχθεί, αλλάζω με τη μέθοδο Κ Scott Allen συζητά στο blog του. 


Άρθρα blog Κ Scott Allen για [σχήμα βάσης δεδομένων εκδόσεων](http://odetocode.com/Blogs/scott/archive/2008/02/03/11746.aspx)


Ash Τενναη έχει θέσει σε εφαρμογή ένα σύστημα MGMT αλλαγή σενάριο που χρησιμοποιεί NHibernate που βασίζεται στα άρθρα blog του Allen για αυτό.


Ash Τενναη του [DbUpdater](http://www.tewari.info/dbupdater/)

 

Προς την αρχή ενός έργου μπορεί να είναι πρακτικό να έχει το σχήμα που δημιουργείται από BuildSchema, αλλά από τη στιγμή που είναι σε πλήρη λειτουργία με κάποια κρίσιμη μάζα (ή αν έχουν κυκλοφορήσει κάτι για τους άλλους) θα πρέπει να συντονίσουν τις αλλαγές στον κώδικα με τις αλλαγές στην σχήματος. Αυτό δεν λειτουργεί με τη μέθοδο buildschema.


Σε έργα μας δημιουργούμε αναβάθμιση και υποβάθμιση σενάρια για κάθε changeset που απαιτεί αλλαγή της βάσης δεδομένων. Δεν έχουμε αυτοματοποιημένη αυτή διαδικασία, αλλά η πρακτική επιτρέπει στους προγραμματιστές να φτάσουμε σε μια τρέχουσα έκδοση από τη λειτουργία των στοιχειωδών σενάρια αλλαγής και να επιστρέψει σε μια προηγούμενη έκδοση εκτελώντας το σενάριο υποβάθμιση. 


Κάθε σενάριο είναι δικό της αρχείο και μπορεί να περιέχει περισσότερες από μία αλλαγή στο DDL ή DML να μεταναστεύσουν δεδομένων κ.λπ.


Το μόνο που πραγματικά χρησιμοποιούν υποβαθμίσεις όταν υπάρχει μια αλλαγή που θα ήταν ασυμβίβαστο με τις προηγούμενες εκδόσεις (αυτές είναι σπάνιες για τα έργα μας).

 