כיצד לעבוד עם NHibernate שוטף ב- C #

ORMs (ממפות יחסי אובייקט) מפשטים את הגישה לנתונים ביישום שלך בכך שהם מאפשרים לך לכתוב קוד לביצוע פעולות CRUD (יצירה, קריאה, עדכון ומחיקה). מסגרות ORM היו בשימוש זמן רב בכדי למנוע את חוסר ההתאמה של העכבה הקיימת בין האובייקט למודלים הנתונים ביישום. למעשה, ORM מאפשרים לך לכתוב קוד לביצוע פעולות CRUD ללא צורך באינטראקציה עם ספק בסיס הנתונים הבסיסי ישירות. לפיכך, שימוש ב- ORM מסייע לך לבודד את מודל האובייקט של היישום שלך ממודל הנתונים.

מדוע NHibernate שוטף?

NHibernate מאחסן את פרטי המיפוי בפורמט XML בקבצי .hbm - צריך שיהיה לך קובץ .hbm אחד לכל מחלקת ישות. קובץ .hbm זה משמש למיפוי הישויות לטבלאות מסד הנתונים המתאימות. בשימוש ב- NHibernate Fluent, אינך צריך יותר להשתמש בקבצי ה- hbm.xml המסורבלים שהיית צריך להשתמש בהם בעבודה עם NHibernate.

NHibernate רהוט הוא המקביל הבטוח המהונדס באופן סטטי, של כלי ה- ORM הפופולרי NHibernate, שניתן להשתמש בו ליצירת מיפוי בין כיתות ה- POCO והמנוע של NHibernate מבטא את הצורך בקבצי XML מסורבלים. הוא מספק ממשק API שוטף גם מאפשר לך להשתמש ב- LINQ לשאילתת נתונים על גבי מנוע ה- NHibernate. בסעיפים הבאים, נדון כיצד נוכל להתקין Fluent NHibernate, ליצור מודלים, למפות מודלים אלה או מחלקות ישויות ולהשתמש ב- Fluent NHibernate לביצוע פעולות CRUD.

מתחילים

כדי להתחיל להשתמש ב- NHibernate Fluent, בצע את השלבים הבאים:

  1. פתח Visual Studio 2015 IDE
  2. לחץ על קובץ -> חדש -> פרויקט
  3. צור פרויקט חדש - למען הפשטות, צור יישום של Windows
  4. ציין שם לפרויקט
  5. לחץ על אישור כדי לשמור את הפרויקט

כעת, לאחר שנוצר פרויקט ב- Visual Studio, כדאי להתקין את Fluent NHibernate כדי להשתמש בו ביישום שלך. אם התקנת את NuGet, האפשרות הקלה ביותר היא להתקין את Fluent NHibernate באמצעות מנהל החבילות של NuGet. לשם כך בחר בפרויקט בחלון סייר הפתרונות, לחץ באמצעות לחצן העכבר הימני ובחר באפשרות "נהל חבילות NuGet ..." להתקנת מסגרת NHibernate Fluent מ- NuGet.

עבודה עם NHibernate שוטף

כדי לעבוד עם Fluent NHibernate תצטרך ליצור מחלקת מודלים. שקול את טבלת מסדי הנתונים הבאה.

CREATE TABLE [dbo].[Product]

(

   [Id] INT NOT NULL PRIMARY KEY,

   [Name] VARCHAR(50) NULL,

   [Description] VARCHAR(50) NULL

)

הנה מחלקת המודל המתאימה.

public class Product

   {

       public virtual int Id { get; set; }

       public virtual string Name { get; set; }

       public virtual string Description { get; set; }

   }

כעת, לאחר שטבלת מסד הנתונים ומחלקת המודל המתאימה מוכנה, השלב הבא הוא יצירת המיפוי הדרוש. כדי למפות ישות ב NHibernate השוטף אתה צריך מחלקת מיפוי תואמת. שיעורי מיפוי כאלה צריכים לנבוע מ- ClassMap כאשר T מייצג את הישות בה אתה משתמש. NHibernate שוטף משתמש בכיתות C # שהוקלדו חזק כדי למפות את המאפיינים של מחלקות המודל לשדות המתאימים בטבלאות מסד הנתונים.

הנה מחלקת המיפוי בשם ProductMap.

public class ProductMap : ClassMap

   {

       public ProductMap()

       {

           Id(x => x.Id);

           Map(x => x.Name);

           Map(x => x.Description);

           Table("Product");

       }

   }

השלב הבא הוא ליצור מעמד עוזר להתחברות למסד הנתונים שלנו. הנה איך השיעור הזה ייראה:

public static class FluentNHibernateHelper

   {

       public static ISession OpenSession()

       {

string connectionString = "Write your database connection string here";

           ISessionFactory sessionFactory = Fluently.Configure()

               .Database(MsSqlConfiguration.MsSql2012

                 .ConnectionString(connectionString).ShowSql()

               )

               .Mappings(m =>

                         m.FluentMappings

                             .AddFromAssemblyOf())

               .ExposeConfiguration(cfg => new SchemaExport(cfg)

                .Create(false, false))

               .BuildSessionFactory();

           return sessionFactory.OpenSession();

       }

   }

שים לב לשיחה ל- sessionFactory.OpenSession () בהצהרה האחרונה - שיחה זו למעשה יוצרת מושב של תקשורת עם מסד הנתונים הבסיסי, כלומר פותח חיבור למסד הנתונים הנמצא בשימוש. כעת תוכל להפעיל את השיטה הסטטית FluentNHibernateHelper.OpenSession () כדי לפתוח חיבור למסד הנתונים. קטע הקוד הבא ממחיש כיצד תוכלו לנצל את מחלקת העוזרים שנוצרה קודם לכן כדי להוסיף רשומת מוצר לטבלת מסד הנתונים של המוצר.

static void Main(string[] args)

       {

           using (var session = FluentNHibernateHelper.OpenSession())

           {

               var product = new Product { Name = "Lenovo Laptop", Description = "Sample product" };

               session.SaveOrUpdate(product);

           }

       }

קטע הקוד הבא מראה כיצד ניתן לשאול נתונים ממסד הנתונים באמצעות מחלקת העוזרים השוטפת שלנו ב- NHibernate.

using (ISession session = FluentNHibernateHelper.OpenSession())

           {

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

               //Usual code

           }

כדי לעבוד עם דוגמאות הקוד המובאות במאמר זה, עליך לוודא שמרחבי השמות הבאים נוספו לכיתה שלך.

  • באמצעות FluentNHibernate.Cfg;
  • באמצעות FluentNHibernate.Cfg.Db;
  • שימוש ב- NHibernate;
  • שימוש ב- NHibernate.Linq;
  • באמצעות NHibernate.Tool.hbm2ddl;
  • באמצעות System.Linq;

תוכל ללמוד עוד על עבודה עם NHibernate Fluent מ- GitHub.