Entity Framework এ, Database First অ্যাপ্রোচ ব্যবহার করে আপনি সরাসরি একটি বিদ্যমান ডেটাবেস থেকে Entity Models তৈরি করতে পারেন। এই প্রক্রিয়ায়, Entity Framework ডেটাবেসের কাঠামো (যেমন টেবিল, কলাম, এবং রিলেশনশিপ) থেকে Entity ক্লাস এবং DbContext তৈরি করে, যা পরে আপনার কোডে ব্যবহার করা যায়। এটি ডেটাবেস ডিজাইন করা হয়ে গেলে বা আপনি যদি ইতিমধ্যে একটি ডেটাবেস দিয়ে কাজ করতে চান তখন উপকারী হয়।
প্রথমে, আপনি একটি Entity Framework Core অ্যাপ্লিকেশন তৈরি করবেন এবং একটি ডেটাবেস সংযোগ স্ট্রিং কনফিগার করবেন। এই কনফিগারেশনটি সাধারণত appsettings.json
ফাইলে রাখা হয়।
appsettings.json এ সংযোগ স্ট্রিং:
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=MyDatabase;Trusted_Connection=True;"
}
}
Entity Framework Core একটি টুল সরবরাহ করে, যা Scaffold-DbContext কমান্ডের মাধ্যমে ডেটাবেস থেকে Entity Model তৈরি করতে সহায়তা করে। এই কমান্ডটি ডেটাবেস টেবিলগুলোকে Entity ক্লাসে রূপান্তরিত করে এবং সম্পর্কিত DbContext তৈরি করে।
এটা করার জন্য, আপনি নীচের পদক্ষেপগুলো অনুসরণ করতে পারেন:
Microsoft.EntityFrameworkCore.SqlServer
এবং Microsoft.EntityFrameworkCore.Tools
প্যাকেজগুলো অন্তর্ভুক্ত করে।NuGet প্যাকেজ ইনস্টল করার কমান্ড:
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
Scaffold-DbContext "Server=localhost;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Context ApplicationDbContext -f
কমান্ড ব্যাখ্যা:
Models
ফোল্ডারে)।উপরের কমান্ড চালানোর পরে, Entity Framework আপনার ডেটাবেসের প্রতিটি টেবিলের জন্য একটি Entity ক্লাস তৈরি করবে এবং আপনার Models
ফোল্ডারে সেগুলো সেভ করবে। প্রতিটি Entity ক্লাস একটি টেবিলের প্রতিনিধিত্ব করবে এবং এর প্রপার্টিগুলি টেবিলের কলামগুলির সাথে মিলে যাবে।
উদাহরণস্বরূপ, যদি আপনার ডেটাবেসে একটি Users
টেবিল থাকে, তাহলে Entity Framework একটি User
ক্লাস তৈরি করবে:
public partial class User
{
public int UserId { get; set; }
public string UserName { get; set; }
public string Email { get; set; }
public ICollection<Order> Orders { get; set; } // Relationship
}
এছাড়া, DbContext ক্লাসও তৈরি হবে, যেখানে সকল Entity গুলোর জন্য DbSet প্রপার্টি থাকবে:
public partial class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public virtual DbSet<User> Users { get; set; }
public virtual DbSet<Order> Orders { get; set; }
}
এই DbContext ক্লাসটির মাধ্যমে আপনি ডেটাবেসের সকল টেবিলের সাথে যোগাযোগ করতে পারবেন।
ডেটাবেস থেকে Entity মডেল তৈরি করার পর, আপনি যদি কোনও কনফিগারেশন পরিবর্তন করতে চান, যেমন প্রপার্টির জন্য Data Annotations বা Fluent API ব্যবহার করা, তাহলে তা OnModelCreating
মেথডে করতে হবে।
উদাহরণস্বরূপ:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.HasKey(u => u.UserId);
modelBuilder.Entity<User>()
.Property(u => u.UserName)
.HasMaxLength(50)
.IsRequired();
}
এইভাবে আপনি মডেলের কনফিগারেশন পরিবর্তন করতে পারেন।
যদি আপনার ডেটাবেসে কোনও পরিবর্তন ঘটে, যেমন নতুন টেবিল তৈরি করা বা কোনও কলাম পরিবর্তন করা, আপনি সেই পরিবর্তনগুলি Entity Framework মডেলের সাথে সিঙ্ক করার জন্য Migrations ব্যবহার করতে পারেন।
মাইগ্রেশন তৈরি করার জন্য:
dotnet ef migrations add InitialMigration
এটি একটি নতুন মাইগ্রেশন তৈরি করবে, যা আপনার Entity Model এবং ডেটাবেসের মধ্যে সিঙ্ক্রোনাইজেশন নিশ্চিত করবে।
ডেটাবেস আপডেট করতে:
dotnet ef database update
এটি আপনার ডেটাবেসকে সর্বশেষ মাইগ্রেশন অনুযায়ী আপডেট করবে।
Database First পদ্ধতিতে Entity Framework ব্যবহার করে আপনি একটি বিদ্যমান ডেটাবেস থেকে সরাসরি Entity Models এবং DbContext ক্লাস তৈরি করতে পারেন। এই পদ্ধতিটি ডেটাবেস-ভিত্তিক অ্যাপ্লিকেশনগুলির জন্য খুবই উপকারী, যেখানে আপনি ডেটাবেসের কাঠামো পরিবর্তন না করে সরাসরি কোডের মধ্যে কাজ করতে চান। Scaffold-DbContext
কমান্ডের মাধ্যমে আপনি দ্রুত মডেল তৈরি করতে পারবেন এবং মডেল কনফিগারেশন ও মাইগ্রেশন ব্যবস্থাপনা সহজে করতে পারবেন।
common.read_more