Προγραμματισμός

Πώς να εργαστείτε με το Fluent NHibernate στο C #

Τα ORM (αντικειμενικοί σχετικοί χαρτογράφοι) απλοποιούν την πρόσβαση δεδομένων στην εφαρμογή σας επιτρέποντάς σας να γράψετε κώδικα για να εκτελέσετε λειτουργίες CRUD (Δημιουργία, Ανάγνωση, Ενημέρωση και Διαγραφή). Τα πλαίσια ORM χρησιμοποιούνται εδώ και πολύ καιρό για να εξαλείψουν την αναντιστοιχία αντίστασης που υπάρχει μεταξύ του αντικειμένου και των μοντέλων δεδομένων σε μια εφαρμογή. Στην ουσία, τα ORM σας δίνουν τη δυνατότητα να γράφετε κώδικα για να εκτελείτε λειτουργίες CRUD χωρίς να χρειάζεται να αλληλεπιδράτε άμεσα με τον υποκείμενο πάροχο βάσης δεδομένων. Έτσι, η χρήση ORMs σας βοηθά να απομονώσετε το μοντέλο αντικειμένου της εφαρμογής σας από το μοντέλο δεδομένων.

Γιατί το Fluent NHibernate;

Το NHibernate αποθηκεύει τις πληροφορίες χαρτογράφησης σε μορφή XML σε αρχεία .hbm - θα πρέπει να έχετε ένα αρχείο .hbm για κάθε κλάση οντοτήτων. Αυτό το αρχείο .hbm χρησιμοποιείται για τη χαρτογράφηση των οντοτήτων στους αντίστοιχους πίνακες βάσης δεδομένων. Κατά τη χρήση του Fluent NHibernate, δεν χρειάζεται πλέον να χρησιμοποιείτε τα δυσκίνητα αρχεία .hbm.xml που χρειάστηκε να χρησιμοποιήσετε όταν εργάζεστε με το NHibernate.

Το Fluent NHibernate είναι το στατιστικά μεταγλωττισμένο, ασφαλές ομόλογο του δημοφιλούς εργαλείου ORM NHibernate που μπορεί να χρησιμοποιηθεί για τη δημιουργία χαρτογράφησης μεταξύ των κατηγοριών POCO και του κινητήρα NHibernate χωρίς την ανάγκη για δυσκίνητα αρχεία XML. Παρέχει ένα Fluent API που σας επιτρέπει επίσης να χρησιμοποιήσετε το LINQ για να ζητήσετε δεδομένα πάνω από τον κινητήρα NHibernate. Στις ενότητες που ακολουθούν, θα συζητήσουμε πώς μπορούμε να εγκαταστήσουμε το Fluent NHibernate, να δημιουργήσουμε μοντέλα, να χαρτογραφήσουμε αυτά τα μοντέλα ή κλάσεις οντοτήτων και να χρησιμοποιήσουμε το Fluent NHibernate για να εκτελέσουμε λειτουργίες CRUD.

Ξεκινώντας

Για να ξεκινήσετε να χρησιμοποιείτε το Fluent NHibernate, ακολουθήστε τα εξής βήματα:

  1. Ανοίξτε το Visual Studio 2015 IDE
  2. Κάντε κλικ στο Αρχείο -> Νέο -> Έργο
  3. Δημιουργήστε ένα νέο έργο - για λόγους απλότητας, δημιουργήστε μια εφαρμογή Windows
  4. Καθορίστε ένα όνομα για το έργο
  5. Κάντε κλικ στο OK για να αποθηκεύσετε το έργο

Τώρα που έχει δημιουργηθεί ένα έργο στο Visual Studio, ίσως θελήσετε να εγκαταστήσετε το Fluent NHibernate για να το χρησιμοποιήσετε στην εφαρμογή σας. Εάν έχετε εγκαταστήσει το NuGet, η ευκολότερη επιλογή είναι να εγκαταστήσετε το Fluent NHibernate μέσω του NuGet Package Manager. Για να το κάνετε αυτό επιλέξτε το έργο στο παράθυρο Solution Explorer, κάντε δεξί κλικ και επιλέξτε "Διαχείριση πακέτων NuGet…" για να εγκαταστήσετε το Fluent NHibernate framework από το NuGet.

Εργασία με το Fluent NHibernate

Για να συνεργαστείτε με το Fluent NHibernate θα πρέπει πρώτα να δημιουργήσετε μια κλάση μοντέλου. Εξετάστε τον παρακάτω πίνακα βάσης δεδομένων.

ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑΣ [dbo]. [Προϊόν]

(

[Αναγνωριστικό] ΔΕΝ ΜΠΟΡΕΙ ΝΕΟ ΠΛΗΡΟΦΟΡΙΚΟ ΚΛΕΙΔΙ,

[Όνομα] VARCHAR (50) NULL,

[Περιγραφή] VARCHAR (50) NULL

)

Εδώ είναι η αντίστοιχη τάξη μοντέλου.

προϊόν δημόσιας τάξης

   {

δημόσια εικονική ταυτότητα {get; σειρά; }

δημόσια εικονική συμβολοσειρά Όνομα {get; σειρά; }

δημόσια εικονική συμβολοσειρά Περιγραφή {get; σειρά; }

   }

Τώρα που ο πίνακας βάσης δεδομένων και η αντίστοιχη κλάση μοντέλου είναι έτοιμοι, το επόμενο βήμα είναι να δημιουργήσετε την απαραίτητη αντιστοίχιση. Για να χαρτογραφήσετε μια οντότητα στο Fluent NHibernate θα πρέπει να έχετε μια αντίστοιχη τάξη χαρτογράφησης. Τέτοιες κλάσεις χαρτογράφησης πρέπει να προέρχονται από το ClassMap όπου το T αντιπροσωπεύει την οντότητα που χρησιμοποιείτε. Το Fluent NHibernate χρησιμοποιεί έντονα δακτυλογραφημένες κατηγορίες C # για να χαρτογραφήσει τις ιδιότητες των κλάσεων μοντέλου στα αντίστοιχα πεδία των πινάκων βάσης δεδομένων.

Εδώ είναι η κλάση χαρτογράφησης που ονομάζεται ProductMap.

δημόσια τάξη ProductMap: ClassMap

   {

δημόσιος χάρτης προϊόντος ()

       {

Αναγνωριστικό (x => x.Id);

Χάρτης (x => x.Name);

Χάρτης (x => x. Περιγραφή);

Πίνακας ("Προϊόν")

       }

   }

Το επόμενο βήμα είναι να δημιουργήσετε μια βοηθητική τάξη για να συνδεθείτε στη βάση δεδομένων μας. Εδώ θα μοιάζει αυτή η τάξη:

δημόσια στατική τάξη FluentNHibernateHelper

   {

δημόσια στατική ISession OpenSession ()

       {

string connectionString = "Γράψτε τη συμβολοσειρά σύνδεσης βάσης δεδομένων εδώ";

ISessionFactory sessionFactory = Άπταιστα. Διαμόρφωση ()

.Βάση δεδομένων (MsSqlConfiguration.MsSql2012

.ConnectionString (connectionString) .ShowSql ()

               )

. Αντιστοιχίσεις (m =>

m.FluentMappings

.AddFromAssemblyOf ())

.ExposeConfiguration (cfg => νέο SchemaExport (cfg)

. Δημιουργία (false, false))

.BuildSessionFactory ();

return sessionFactory.OpenSession ();

       }

   }

Σημειώστε την κλήση στο sessionFactory.OpenSession () στην τελευταία δήλωση - αυτή η κλήση δημιουργεί πραγματικά μια συνεδρία επικοινωνίας με την υποκείμενη βάση δεδομένων, δηλαδή ανοίγει μια σύνδεση με τη βάση δεδομένων που χρησιμοποιείται. Τώρα μπορείτε να καλέσετε τη στατική μέθοδο FluentNHibernateHelper.OpenSession () για να ανοίξετε μια σύνδεση στη βάση δεδομένων. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να επωφεληθείτε από την κατηγορία βοηθών που δημιουργήθηκε νωρίτερα για να προσθέσετε μια εγγραφή προϊόντος στον πίνακα βάσης δεδομένων προϊόντων

static void Main (συμβολοσειρά [] args)

       {

χρησιμοποιώντας (var session = FluentNHibernateHelper.OpenSession ())

           {

var product = new Product {Name = "Lenovo Laptop", Περιγραφή = "Δείγμα προϊόντος"};

session.SaveOrUpdate (προϊόν);

           }

       }

Το παρακάτω απόσπασμα κώδικα δείχνει τον τρόπο με τον οποίο μπορείτε να ζητήσετε δεδομένα από τη βάση δεδομένων χρησιμοποιώντας την κατηγορία βοηθού Fluent NHibernate.

χρησιμοποιώντας (περίοδος σύνδεσης ISession = FluentNHibernateHelper.OpenSession ())

           {

var products = session.Query (). ToList ();

// Συνήθης κωδικός

           }

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

  • χρησιμοποιώντας FluentNHibernate.Cfg;
  • χρησιμοποιώντας FluentNHibernate.Cfg.Db;
  • χρησιμοποιώντας NHibernate;
  • χρησιμοποιώντας NHibernate.Linq;
  • χρησιμοποιώντας το NHibernate.Tool.hbm2ddl;
  • χρησιμοποιώντας το System.Linq;

Μπορείτε να μάθετε περισσότερα σχετικά με τη συνεργασία με το Fluent NHibernate από το GitHub.