Cara bekerja dengan Fluent NHibernate di C #

ORM (pemeta relasional objek) mempermudah akses data dalam aplikasi anda dengan membolehkan anda menulis kod untuk melakukan operasi CRUD (Buat, Baca, Kemas kini, dan Padam). Kerangka ORM telah lama digunakan untuk menghilangkan ketidakcocokan impedans yang ada antara objek dan model data dalam aplikasi. Pada hakikatnya, ORM membolehkan anda menulis kod untuk melakukan operasi CRUD dan tidak perlu berinteraksi dengan penyedia pangkalan data secara langsung. Oleh itu, penggunaan ORM membantu anda mengasingkan model objek aplikasi anda dari model data.

Mengapa Fibre NHibernate?

NHibernate menyimpan maklumat pemetaan dalam format XML dalam fail .hbm - anda harus mempunyai satu fail .hbm untuk setiap kelas entiti. Fail .hbm ini digunakan untuk memetakan entiti ke jadual pangkalan data yang sesuai. Dalam menggunakan Fluent NHibernate, anda tidak perlu lagi menggunakan fail .hbm.xml yang rumit yang harus anda gunakan semasa bekerja dengan NHibernate.

Fluent NHibernate adalah rakan selamat yang disusun secara statik dari alat ORM NHibernate yang popular yang dapat digunakan untuk membuat pemetaan antara kelas POCO dan enjin NHibernate memerlukan keperluan fail XML yang rumit. Ia menyediakan Fluent API yang juga membolehkan anda menggunakan LINQ untuk meminta data di atas enjin NHibernate. Pada bahagian yang berikut, kita akan membincangkan bagaimana kita dapat memasang Fluent NHibernate, membuat model, memetakan model atau kelas entiti ini dan menggunakan Fluent NHibernate untuk melakukan operasi CRUD.

Bermula

Untuk mula menggunakan Fluent NHibernate, ikuti langkah berikut:

  1. Buka Visual Studio 2015 IDE
  2. Klik pada Fail -> Baru -> Projek
  3. Buat projek baru - demi kesederhanaan, buat Aplikasi Windows
  4. Nyatakan nama untuk projek tersebut
  5. Klik OK untuk menyimpan projek

Setelah projek dibuat di Visual Studio, anda mungkin ingin memasang Fluent NHibernate untuk menggunakannya dalam aplikasi anda. Sekiranya anda memasang NuGet, pilihan paling mudah ialah memasang Fluent NHibernate melalui Pengurus Pakej NuGet. Untuk melakukan ini, pilih projek di Solution Explorer Window, klik kanan dan pilih pilihan "Urus NuGet Packages ..." untuk memasang Fluent NHibernate framework dari NuGet.

Bekerja dengan Fluent NHibernate

Untuk bekerjasama dengan Fluent NHibernate, anda perlu membuat kelas model terlebih dahulu. Pertimbangkan jadual pangkalan data berikut.

CREATE TABLE [dbo].[Product]

(

   [Id] INT NOT NULL PRIMARY KEY,

   [Name] VARCHAR(50) NULL,

   [Description] VARCHAR(50) NULL

)

Inilah kelas model yang sesuai.

public class Product

   {

       public virtual int Id { get; set; }

       public virtual string Name { get; set; }

       public virtual string Description { get; set; }

   }

Setelah jadual pangkalan data dan kelas model yang sesuai sudah siap, langkah seterusnya adalah membuat pemetaan yang diperlukan. Untuk memetakan entiti di Fluent NHibernate, anda harus mempunyai kelas pemetaan yang sesuai. Kelas pemetaan sedemikian harus berasal dari ClassMap di mana T mewakili entiti yang anda gunakan. Fluent NHibernate menggunakan kelas C # yang ditaip kuat untuk memetakan sifat kelas model ke medan jadual pangkalan data yang sesuai.

Inilah kelas pemetaan bernama ProductMap.

public class ProductMap : ClassMap

   {

       public ProductMap()

       {

           Id(x => x.Id);

           Map(x => x.Name);

           Map(x => x.Description);

           Table("Product");

       }

   }

Langkah seterusnya adalah membuat kelas pembantu untuk menyambung ke pangkalan data kami. Inilah rupa kelas ini:

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();

       }

   }

Perhatikan panggilan ke sessionFactory.OpenSession () dalam pernyataan terakhir - panggilan ini benar-benar membuat sesi komunikasi dengan pangkalan data yang mendasari, iaitu, ia membuka sambungan ke pangkalan data yang sedang digunakan. Anda kini boleh menggunakan kaedah statik FluentNHibernateHelper.OpenSession () untuk membuka sambungan ke pangkalan data. Coretan kod berikut menggambarkan bagaimana anda dapat memanfaatkan kelas pembantu yang dibuat sebelumnya untuk menambahkan rekod Produk ke jadual pangkalan data Produk.

static void Main(string[] args)

       {

           using (var session = FluentNHibernateHelper.OpenSession())

           {

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

               session.SaveOrUpdate(product);

           }

       }

Coretan kod berikut menunjukkan bagaimana anda boleh membuat pertanyaan data dari pangkalan data menggunakan kelas penolong Fluent NHibernate kami.

using (ISession session = FluentNHibernateHelper.OpenSession())

           {

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

               //Usual code

           }

Untuk bekerja dengan contoh kod yang diberikan dalam artikel ini, anda harus memastikan bahawa ruang nama berikut telah ditambahkan ke kelas anda.

  • menggunakan FluentNHibernate.Cfg;
  • menggunakan FluentNHibernate.Cfg.Db;
  • menggunakan NHibernate;
  • menggunakan NHibernate.Linq;
  • menggunakan NHibernate.Tool.hbm2ddl;
  • menggunakan System.Linq;

Anda boleh mengetahui lebih lanjut mengenai bekerja dengan Fluent NHibernate dari GitHub.