Entity Framework (EF) সেটআপ এবং কনফিগারেশন গুরুত্বপূর্ণ পদক্ষেপ যাতে আপনি আপনার অ্যাপ্লিকেশন এবং ডেটাবেসের মধ্যে সঠিক যোগাযোগ নিশ্চিত করতে পারেন। EF-এর কনফিগারেশন দুটি মূল স্তরে করা হয়: ডাটাবেস কনফিগারেশন এবং মডেল কনফিগারেশন। এখানে আমরা EF এর কনফিগারেশনের গুরুত্বপূর্ণ অংশগুলো আলোচনা করব।
Entity Framework এ, DbContext হলো মূল শ্রেণী যা আপনার ডেটাবেসের সাথে যোগাযোগের জন্য ব্যবহৃত হয়। DbContext কনফিগারেশনের মাধ্যমে আপনি ডেটাবেস সংযোগ, মডেল কনফিগারেশন এবং অন্যান্য বিভিন্ন ফিচার কনফিগার করতে পারেন।
DbContext হলো Entity Framework এর কেন্দ্রবিন্দু, যা আপনার ডেটাবেসের Entities (টেবিলগুলো) প্রতিনিধিত্ব করে এবং ডেটাবেসের সাথে CRUD অপারেশন পরিচালনা করে।
DbContext ব্যবহার করার জন্য আপনাকে প্রথমে একটি ক্লাস তৈরি করতে হবে যা DbContext থেকে ইনহেরিট করবে।
public class ApplicationDbContext : DbContext
{
public DbSet<User> Users { get; set; } // Entity for Users table
public DbSet<Order> Orders { get; set; } // Entity for Orders table
// DbContext Configuration
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("your_connection_string");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// Additional model configuration can go here
}
}
EF-এ সংযোগ করার জন্য connection string অপরিহার্য। এটি appsettings.json
ফাইলে সংরক্ষণ করা হয় এবং DbContext এর মধ্যে সেট করা হয়।
{
"ConnectionStrings": {
"DefaultConnection": "Server=.;Database=MyDatabase;Trusted_Connection=True;"
}
}
DbContext ক্লাসে এই কনফিগারেশনটি এভাবে ব্যবহার করা হয়:
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
}
এখানে options
ইনজেক্ট করা হয় Startup.cs
-এ যেখানে DbContext কনফিগার করা হয়।
Fluent API ব্যবহার করে আপনি মডেল কনফিগারেশন আরও বিস্তারিতভাবে করতে পারেন, যেমন প্রপার্টি কনফিগারেশন, রিলেশনশিপ কনফিগারেশন ইত্যাদি। এটি OnModelCreating
মেথডের মধ্যে করা হয়।
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.HasKey(u => u.UserId); // Primary Key configuration
modelBuilder.Entity<Order>()
.HasOne(o => o.User) // One-to-Many relationship
.WithMany(u => u.Orders)
.HasForeignKey(o => o.UserId);
}
HasKey()
: Primary Key কনফিগার করে।HasOne()
এবং WithMany()
: One-to-Many রিলেশনশিপ কনফিগার করে।Data Annotations হচ্ছে এমন একটি পদ্ধতি যেখানে আপনি মডেল ক্লাসে বিভিন্ন অ্যাট্রিবিউট ব্যবহার করে কনফিগারেশন নির্ধারণ করতে পারেন। উদাহরণস্বরূপ:
public class User
{
[Key]
public int UserId { get; set; }
[Required]
[MaxLength(100)]
public string UserName { get; set; }
public ICollection<Order> Orders { get; set; }
}
[Key]
: Primary Key নির্ধারণ করে।[Required]
: প্রপার্টির জন্য মান নির্ধারণের বাধ্যবাধকতা।[MaxLength]
: প্রপার্টির সর্বোচ্চ দৈর্ঘ্য নির্ধারণ করে।এই কনফিগারেশনটি OnModelCreating
মেথডের মধ্যে করার প্রয়োজন নেই।
EF Core অ্যাপ্লিকেশনগুলিতে Dependency Injection (DI) ব্যবহার করে DbContext ইনজেক্ট করা হয়। এটি সাধারণত Startup.cs
বা Program.cs
ফাইলে করা হয়।
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
এখানে AddDbContext পদ্ধতির মাধ্যমে DbContext কনফিগার করা হয়েছে এবং UseSqlServer পদ্ধতির মাধ্যমে SQL Server ডেটাবেসের সংযোগ স্থাপন করা হয়েছে।
EF Core মাইগ্রেশন সিস্টেম ব্যবহার করে ডেটাবেসের স্কিমা আপডেট করতে পারেন। এটি ডেটাবেসের পরিবর্তনসমূহ ট্র্যাক করে এবং স্বয়ংক্রিয়ভাবে সেগুলো প্রয়োগ করে।
ডেটাবেসের প্রথম মাইগ্রেশন তৈরি করতে:
dotnet ef migrations add InitialCreate
ডেটাবেস আপডেট করতে:
dotnet ef database update
Entity Framework এর কনফিগারেশন হলো একটি গুরুত্বপূর্ণ পদক্ষেপ যা ডেটাবেসের সাথে সম্পর্কিত বিভিন্ন সেটিংস নির্ধারণ করে। DbContext, Fluent API, Data Annotations, Dependency Injection, এবং Migrations ব্যবহারের মাধ্যমে আপনি আপনার Entity Framework অ্যাপ্লিকেশনকে কনফিগার করতে পারবেন। এসব কনফিগারেশন অ্যাপ্লিকেশনের পারফরম্যান্স এবং স্কেলেবিলিটি উন্নত করতে সহায়ক।
common.read_more