Fluent NHibernate ব্যবহার করে Mapping করা

Entity এবং Mapping ফাইল তৈরি (Entity and Mapping Files) - এন হাইবারনেট (NHibernate) - Microsoft Technologies

265
  1. Fluent NHibernate হল NHibernate এর একটি উন্নত এবং প্রোগ্রামেটিক API, যা ORM মডেল (Entity Classes) এবং ডেটাবেস টেবিলের মধ্যে ম্যাপিং সম্পাদন করতে সহজ এবং কার্যকরী পদ্ধতি প্রদান করে। Fluent NHibernate কনফিগারেশন এবং ম্যাপিং এর জন্য XML ফাইলের পরিবর্তে কোড-বেসড পদ্ধতি ব্যবহার করা হয়, যা অনেক বেশি প্রাপ্তিযোগ্য এবং কোডের মাধ্যমে সহজে কনফিগার করা যায়।

Fluent NHibernate ব্যবহার করে Entity ক্লাস এবং ডেটাবেস টেবিলের মধ্যে ম্যাপিং করা হয়, এবং এই ম্যাপিংে আপনি শ্রেণীর প্রপার্টি এবং টেবিল কলামের মধ্যে সম্পর্ক নির্ধারণ করেন।


1. Fluent NHibernate ইন্সটল করা

প্রথমে, Fluent NHibernate ব্যবহার করতে হবে, সেজন্য NuGet প্যাকেজ ম্যানেজার ব্যবহার করে নিম্নলিখিত প্যাকেজ ইনস্টল করুন:

Install-Package FluentNHibernate

2. Entity ক্লাস তৈরি করা

এখানে একটি উদাহরণ Entity ক্লাস হিসেবে একটি Employee ক্লাস তৈরি করা হয়েছে, যা একটি ডেটাবেস টেবিলের সাথে ম্যাপ হবে।

public class Employee
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual int Age { get; set; }
}

এটি একটি সাধারণ C# ক্লাস যা তিনটি প্রপার্টি ধারণ করে: Id, Name, এবং Age


3. Fluent NHibernate Mapping তৈরি করা

Fluent NHibernate এর মাধ্যমে Entity ক্লাসের জন্য ম্যাপিং তৈরি করা হয়। এই ম্যাপিং ক্লাসে আমরা ক্লাসের প্রপার্টি এবং ডেটাবেস টেবিলের কলামগুলির মধ্যে সম্পর্ক তৈরি করি।

using FluentNHibernate.Mapping;

public class EmployeeMap : ClassMap<Employee>
{
    public EmployeeMap()
    {
        // টেবিলের নাম সেট করা
        Table("Employees");

        // প্রপার্টি এবং টেবিল কলামের মধ্যে সম্পর্ক স্থাপন
        Id(x => x.Id).GeneratedBy.Identity();  // Identity প্রপার্টি, প্রাথমিক কী
        Map(x => x.Name).Length(100).Not.Nullable(); // Name কলাম, Length এবং Nullable কনফিগারেশন
        Map(x => x.Age).Not.Nullable(); // Age কলাম
    }
}

এখানে:

  • Table("Employees"): ডেটাবেস টেবিলের নাম Employees নির্ধারণ করে।
  • Id(x => x.Id).GeneratedBy.Identity(): Id প্রপার্টি প্রাথমিক কী হিসেবে ব্যবহৃত হবে এবং এটি Identity প্রপার্টি, অর্থাৎ, এটি স্বয়ংক্রিয়ভাবে বৃদ্ধি পাবে।
  • Map(x => x.Name).Length(100).Not.Nullable(): Name প্রপার্টি টেবিলের কলামের সাথে ম্যাপ হবে, যেখানে কলামের দৈর্ঘ্য 100 এবং এটি Nullable হবে না।
  • Map(x => x.Age).Not.Nullable(): Age প্রপার্টি টেবিলের কলামের সাথে ম্যাপ হবে এবং এটি Nullable হবে না।

4. Fluent NHibernate কনফিগারেশন এবং SessionFactory তৈরি করা

Fluent NHibernate ব্যবহার করে কনফিগারেশন সেটআপ করা হয় এবং তারপর সেশন ফ্যাক্টরি তৈরি করা হয়। নিচে একটি উদাহরণ দেয়া হলো যেখানে Fluent NHibernate এর কনফিগারেশন এবং SessionFactory তৈরি করা হয়েছে:

using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate;
using System;

public class NHibernateHelper
{
    private static ISessionFactory sessionFactory;

    public static ISessionFactory SessionFactory
    {
        get
        {
            if (sessionFactory == null)
            {
                sessionFactory = Fluently.Configure()
                    .Database(MsSqlConfiguration.MsSql2008.ConnectionString(c => c.Is("Server=yourserver;Database=yourdb;Integrated Security=True;")))
                    .Mappings(m => m.FluentMappings.AddFromAssemblyOf<EmployeeMap>()) // EmployeeMap ক্লাসটি ম্যাপিংয়ের জন্য ব্যবহার হবে
                    .BuildSessionFactory();
            }
            return sessionFactory;
        }
    }
}

এখানে:

  • Fluently.Configure(): Fluent NHibernate কনফিগারেশন শুরু করে।
  • Database(MsSqlConfiguration.MsSql2008.ConnectionString(...)): SQL Server 2008 এর জন্য কানেকশন স্ট্রিং কনফিগার করা হয়েছে।
  • Mappings(m => m.FluentMappings.AddFromAssemblyOf()): EmployeeMap ক্লাসটি ম্যাপিং কনফিগারেশনের জন্য যোগ করা হয়েছে। এখানে AddFromAssemblyOf<EmployeeMap>() ব্যবহার করা হয়েছে যাতে সমস্ত Fluent Mapping কনফিগারেশন এই অ্যাসেম্বলি থেকে স্বয়ংক্রিয়ভাবে অ্যাড হয়।

5. Session ব্যবহার করে ডেটাবেস অপারেশন

Fluent NHibernate কনফিগারেশন এবং Mapping প্রস্তুত হওয়ার পর, এখন আমরা সেশন তৈরি করে ডেটাবেসে অপারেশন সম্পাদন করতে পারি। নিচে একটি উদাহরণ দেওয়া হলো যেখানে Employee অবজেক্ট সেভ করা হচ্ছে:

using NHibernate;
using System;

public class SessionExample
{
    public void SaveEmployee()
    {
        // সেশন তৈরি করা
        using (ISession session = NHibernateHelper.SessionFactory.OpenSession())
        {
            using (ITransaction transaction = session.BeginTransaction())
            {
                try
                {
                    var employee = new Employee { Name = "John Doe", Age = 30 };
                    session.Save(employee);  // Employee অবজেক্ট সেভ করা

                    transaction.Commit();  // ট্রানজেকশন কমিট করা
                }
                catch (Exception)
                {
                    transaction.Rollback();  // কোনো সমস্যা হলে ট্রানজেকশন রোলব্যাক করা
                    throw;
                }
            }
        }
    }
}

এখানে:

  • session.Save(employee): Employee অবজেক্ট ডেটাবেসে সেভ করা হচ্ছে।
  • transaction.Commit(): ট্রানজেকশন সফল হলে, সমস্ত পরিবর্তন ডেটাবেসে সেভ হবে।

6. Fluent NHibernate এর সুবিধা

  • কমপ্লেক্স ম্যাপিং সহজ করা: Fluent NHibernate ডাইনামিক ম্যাপিং কনফিগারেশন প্রদান করে, যা XML কনফিগারেশন ফাইলের তুলনায় অনেক বেশি সহজ এবং পাঠযোগ্য।
  • টেকনিক্যাল ডিপেনডেন্সি কমানো: XML ফাইলের পরিবর্তে কোড-ভিত্তিক কনফিগারেশন ব্যবহারের মাধ্যমে ডিপেনডেন্সি ম্যানেজমেন্ট সহজ হয়।
  • গঠনমূলক এবং স্বচ্ছ কনফিগারেশন: Fluent NHibernate কোডের মাধ্যমে স্বচ্ছ এবং গঠনমূলক কনফিগারেশন প্রদান করে, যা স্কেলেবিলিটি ও রক্ষণাবেক্ষণ সহজ করে।

Fluent NHibernate এর মাধ্যমে কনফিগারেশন এবং ম্যাপিং অত্যন্ত সহজ এবং প্রোগ্রামেটিক পদ্ধতিতে সম্পাদন করা যায়। এর ফলে ডেটাবেস এবং মডেল ক্লাসের মধ্যে সম্পর্ক খুবই স্পষ্ট ও কার্যকরীভাবে তৈরি হয়।

Content added By
Promotion

Are you sure to start over?

Loading...