Entity Framework Core (EF Core) হলো একটি ওপেন সোর্স ORM (Object-Relational Mapper) যা .NET অ্যাপ্লিকেশনগুলিতে ডাটাবেজ পরিচালনার জন্য ব্যবহৃত হয়। EF Core ডাটাবেজের সাথে কাজ করার জন্য ডাটাবেজের টেবিলগুলিকে ক্লাসে রূপান্তরিত করে এবং আপনার কোডের মাধ্যমে ডাটাবেজ অপারেশন পরিচালনা করতে সহায়তা করে। এটি LINQ (Language Integrated Query) ব্যবহার করে ডাটাবেজের সাথে কোডের মধ্যে যোগাযোগের সুবিধা দেয়।
EF Core এর মাধ্যমে আপনি ডাটাবেজ তৈরি, ডেটা প্রবাহ, ডেটা ম্যানিপুলেশন এবং ডাটাবেজ মাইগ্রেশন ইত্যাদি কার্যক্রম খুব সহজে পরিচালনা করতে পারেন।
EF Core সেটআপ এবং কনফিগারেশন
ASP.Net প্রজেক্টে Entity Framework Core ব্যবহার করতে নিচের ধাপগুলো অনুসরণ করতে হবে:
১. NuGet প্যাকেজ ইনস্টল করা
প্রথমে Entity Framework Core প্যাকেজ ইনস্টল করতে হবে। আপনি NuGet Package Manager অথবা .NET CLI ব্যবহার করে এটি ইনস্টল করতে পারেন।
- NuGet Package Manager ব্যবহার করে:
- Visual Studio থেকে Tools > NuGet Package Manager > Manage NuGet Packages for Solution এ যান।
- Browse ট্যাবে Microsoft.EntityFrameworkCore সার্চ করুন এবং Install বাটনে ক্লিক করুন।
.NET CLI ব্যবহার করে:
dotnet add package Microsoft.EntityFrameworkCore
আপনি যদি SQL Server ব্যবহার করতে চান, তাহলে Microsoft.EntityFrameworkCore.SqlServer প্যাকেজও ইনস্টল করতে হবে:
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
২. DbContext ক্লাস তৈরি করা
DbContext ক্লাস হলো EF Core এর মাধ্যমে ডাটাবেজের সাথে ইন্টারঅ্যাক্ট করার মূল ক্লাস। এতে আপনার ডাটাবেজের টেবিলগুলির DbSet প্রপার্টি থাকে যা টেবিলগুলিকে মডেল হিসেবে রূপান্তর করে।
এখানে একটি DbContext ক্লাসের উদাহরণ দেওয়া হলো:
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public DbSet<Product> Products { get; set; }
public DbSet<Customer> Customers { get; set; }
}
এখানে, Products এবং Customers হলো DbSet যা Product এবং Customer মডেল ক্লাসকে ডাটাবেজ টেবিল হিসেবে মান্য করে।
৩. Model Classes তৈরি করা
ডাটাবেজ টেবিলের জন্য মডেল ক্লাস তৈরি করতে হবে। এই ক্লাসগুলো হলো C# এর POCO (Plain Old CLR Object) ক্লাস যা ডাটাবেজের তথ্য ধারণ করে।
Product মডেল ক্লাসের উদাহরণ:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
এখানে, Product ক্লাসের প্রপার্টি গুলো Products টেবিলের কলামের প্রতিনিধিত্ব করবে।
৪. DbContext কনফিগারেশন
প্রজেক্টের Startup.cs ফাইলে DbContext কনফিগার করতে হবে যাতে এটি ডাটাবেজের সাথে সংযুক্ত হতে পারে।
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
এখানে UseSqlServer মেথডটি SQL Server ডাটাবেজের সাথে সংযোগ করতে ব্যবহৃত হয় এবং DefaultConnection হলো appsettings.json ফাইল থেকে ডাটাবেজের সংযোগ স্ট্রিং।
৫. Connection String কনফিগারেশন
appsettings.json ফাইলে ডাটাবেজ সংযোগ স্ট্রিং সংজ্ঞায়িত করতে হবে।
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyAppDb;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}
এখানে DefaultConnection SQL Server এর সংযোগ স্ট্রিং নির্দেশ করে। আপনি যদি অন্য কোন ডাটাবেজ ব্যবহার করতে চান, যেমন SQLite বা PostgreSQL, তাহলে তার সংযোগ স্ট্রিং ব্যবহার করবেন।
ডাটাবেজ অপারেশন (CRUD)
EF Core ব্যবহার করে Create, Read, Update, এবং Delete (CRUD) অপারেশনগুলো খুব সহজে করা যায়।
১. Create (Insert Data)
ডাটাবেজে নতুন রেকর্ড ইনসার্ট করতে EF Core ব্যবহার করা হয়:
public class ProductService
{
private readonly ApplicationDbContext _context;
public ProductService(ApplicationDbContext context)
{
_context = context;
}
public void AddProduct(Product product)
{
_context.Products.Add(product);
_context.SaveChanges();
}
}
২. Read (Retrieve Data)
ডাটাবেজ থেকে ডেটা পড়তে:
public class ProductService
{
private readonly ApplicationDbContext _context;
public ProductService(ApplicationDbContext context)
{
_context = context;
}
public List<Product> GetAllProducts()
{
return _context.Products.ToList();
}
}
৩. Update (Update Data)
ডাটাবেজের রেকর্ড আপডেট করতে:
public void UpdateProduct(Product product)
{
_context.Products.Update(product);
_context.SaveChanges();
}
৪. Delete (Delete Data)
ডাটাবেজ থেকে রেকর্ড মুছতে:
public void DeleteProduct(int productId)
{
var product = _context.Products.Find(productId);
if (product != null)
{
_context.Products.Remove(product);
_context.SaveChanges();
}
}
ডাটাবেজ মাইগ্রেশন
ডাটাবেজ মাইগ্রেশন EF Core এর মাধ্যমে আপনার ডাটাবেজের স্কিমা আপডেট করা যায়।
১. মাইগ্রেশন তৈরি করা
dotnet ef migrations add InitialCreate
২. ডাটাবেজ আপডেট করা
dotnet ef database update
এই কমান্ডটি আপনার মাইগ্রেশন ফাইল অনুযায়ী ডাটাবেজ স্কিমা আপডেট করবে।
সারাংশ
Entity Framework Core (EF Core) ASP.Net অ্যাপ্লিকেশনগুলির জন্য একটি শক্তিশালী ORM টুল যা ডাটাবেজ পরিচালনা এবং ডাটাবেজে ডেটা প্রবাহ সহজ করে। এটি ডাটাবেজে CRUD (Create, Read, Update, Delete) অপারেশন করা, ডাটাবেজ স্কিমা মাইগ্রেশন পরিচালনা করা এবং LINQ এর মাধ্যমে ডেটার সাথে ইন্টারঅ্যাক্ট করা অত্যন্ত সহজ করে তোলে। EF Core সেটআপ করার পর, আপনি ডাটাবেজের সাথে সংযোগ স্থাপন, মডেল তৈরি, এবং মাইগ্রেশন পরিচালনা করে আপনার অ্যাপ্লিকেশনে ডাটাবেজ ইন্টিগ্রেশন সম্পন্ন করতে পারেন।
Entity Framework (EF) হলো একটি Object-Relational Mapping (ORM) ফ্রেমওয়ার্ক যা .NET অ্যাপ্লিকেশনগুলিতে ডেটাবেসের সঙ্গে কাজ করার জন্য ব্যবহৃত হয়। এটি ডেভেলপারদের রিলেশনাল ডেটাবেসে ডেটা সঞ্চালন করার জন্য C# কোড ব্যবহার করতে সাহায্য করে, SQL কোড লিখতে না হয়। EF ডেটাবেস টেবিলগুলিকে ক্লাস এবং রেকর্ডগুলিকে অবজেক্ট হিসেবে মডেল করে, যার ফলে ডেটাবেসের সঙ্গে ডেটা ইন্টারঅ্যাকশন অনেক সহজ হয়ে যায়।
Entity Framework এর কাজ
EF মূলত ডেটাবেস অপারেশনগুলি যেমন CRUD (Create, Read, Update, Delete) সহজ করে দেয়। EF ডেভেলপারদের কোড-ফার্স্ট, ডেটাবেস-ফার্স্ট, অথবা মডেল-ফার্স্ট অ্যাপ্রোচ ব্যবহার করতে দেয় ডেটাবেস তৈরি এবং পরিচালনা করার জন্য।
EF ব্যবহারের সুবিধাসমূহ:
- ডেটাবেস ম্যানেজমেন্ট সহজ করা: EF কোডবেস থেকে সরাসরি ডেটাবেসকে পরিচালনা করতে সাহায্য করে।
- ডেটাবেস ইন্টারঅ্যাকশন সিম্প্লিফাই করা: SQL কোড লেখা ছাড়াই ডেটাবেসের সঙ্গে ইন্টারঅ্যাকশন করা যায়।
- ডেটা মডেলিং: EF অবজেক্ট-ওরিয়েন্টেড মডেলিং সিস্টেমের মাধ্যমে ডেটাবেস মডেল তৈরি করে।
Entity Framework এর প্রকারভেদ
Entity Framework এ তিনটি প্রধান প্রকারভেদ রয়েছে:
১. Entity Framework Core (EF Core)
EF Core হলো EF এর আধুনিক, হালনাগাদ এবং ক্রস-প্ল্যাটফর্ম সংস্করণ। এটি ASP.Net Core অ্যাপ্লিকেশনগুলির সঙ্গে পুরোপুরি ইন্টিগ্রেটেড এবং ডেটাবেস পরিচালনার জন্য একটি হালকা ও দ্রুত সংস্করণ। EF Core অ্যাপ্লিকেশনগুলির জন্য ব্যবহার করা হয় যেগুলোতে প্ল্যাটফর্ম ইন্ডিপেনডেন্ট কাজ করা প্রয়োজন।
২. Entity Framework 6 (EF 6)
EF 6 হলো Entity Framework এর পূর্ববর্তী সংস্করণ, যা .NET Framework অ্যাপ্লিকেশনের জন্য ব্যবহৃত হয়। যদিও EF Core অধিকতর জনপ্রিয় এবং আধুনিক, EF 6 এখনও অনেক বড় অ্যাপ্লিকেশন এবং লেজেসি সিস্টেমে ব্যবহৃত হচ্ছে।
৩. Database First এবং Code First
EF তিনটি প্রধান অ্যাপ্রোচে কাজ করতে পারে:
- Code First: ডেভেলপাররা কোড লিখে মডেল তৈরি করেন, এবং EF এটি থেকে ডেটাবেস তৈরি করে।
- Database First: ইতিমধ্যেই বিদ্যমান ডেটাবেসের উপর ভিত্তি করে EF মডেল তৈরি করা হয়।
- Model First: মডেল তৈরি করার পর ডেটাবেস তৈরি করা হয়।
EF Core এর প্রধান বৈশিষ্ট্য
EF Core বেশ কিছু নতুন ফিচার নিয়ে এসেছে যা EF 6 এর তুলনায় আরও শক্তিশালী এবং দ্রুত। এর কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য হলো:
- ক্রস-প্ল্যাটফর্ম সমর্থন: EF Core Windows, Linux, এবং macOS-এ কাজ করতে পারে।
- ডেটাবেসের বিভিন্ন ধরণের সমর্থন: EF Core বিভিন্ন ডেটাবেস যেমন SQL Server, SQLite, PostgreSQL, MySQL, ইত্যাদি সমর্থন করে।
- অ্যাডভান্সড কুয়েরি অপটিমাইজেশন: EF Core উন্নত কুয়েরি অপটিমাইজেশন সুবিধা প্রদান করে।
- লাইটওয়েট: EF Core তুলনামূলকভাবে লাইটওয়েট এবং বেশি পারফরম্যান্স ফ্রেন্ডলি।
Entity Framework এর প্রধান কার্যকারিতা
১. CRUD অপারেশন (Create, Read, Update, Delete)
EF কোড-ফার্স্ট অ্যাপ্রোচে ডেটাবেসের সঙ্গে CRUD অপারেশন সহজভাবে পরিচালনা করা যায়:
Create: নতুন রেকর্ড তৈরি করা।
var product = new Product { Name = "Laptop", Price = 1500 }; dbContext.Products.Add(product); dbContext.SaveChanges();Read: ডেটাবেস থেকে রেকর্ড পড়া।
var product = dbContext.Products.FirstOrDefault(p => p.Name == "Laptop");Update: বিদ্যমান রেকর্ড আপডেট করা।
var product = dbContext.Products.FirstOrDefault(p => p.Id == 1); product.Price = 1200; dbContext.SaveChanges();Delete: রেকর্ড মুছে ফেলা।
var product = dbContext.Products.FirstOrDefault(p => p.Id == 1); dbContext.Products.Remove(product); dbContext.SaveChanges();
২. Data Annotations এবং Fluent API
EF ডেটাবেস মডেলিংয়ের জন্য দুইটি প্রধান পদ্ধতি ব্যবহার করতে পারে:
- Data Annotations: ক্লাস এবং প্রপার্টির উপর অ্যানোটেশন ব্যবহার করে ডেটাবেস মডেল ডিফাইন করা যায়।
- Fluent API: কোডে C# API ব্যবহার করে ডেটাবেস মডেল কনফিগার করা হয়।
৩. Migrations (মাইগ্রেশন)
EF কোড-ফার্স্ট ব্যবহার করলে, ডেটাবেস স্কিমা পরিবর্তনের জন্য Migrations ব্যবহার করা হয়। মাইগ্রেশন কোড পরিবর্তনগুলো ডেটাবেসে আপডেট করতে সাহায্য করে।
মাইগ্রেশন তৈরি:
dotnet ef migrations add InitialCreateমাইগ্রেশন আপডেট:
dotnet ef database update
সারসংক্ষেপ
Entity Framework (EF) হলো একটি শক্তিশালী ORM ফ্রেমওয়ার্ক যা .NET ডেভেলপারদের ডেটাবেসের সঙ্গে ডাইনামিকভাবে কাজ করার সহজ উপায় প্রদান করে। EF এর সাহায্যে ডেটাবেস ম্যানিপুলেশন যেমন CRUD অপারেশন, কুয়েরি লেখার কাজ আরও দ্রুত এবং সিম্পল হয়ে যায়। EF Core এর আধুনিক সংস্করণটি ক্রস-প্ল্যাটফর্ম সমর্থন, উন্নত পারফরম্যান্স এবং আরও বেশি ডেটাবেস সমর্থন নিয়ে আসে, যা আধুনিক অ্যাপ্লিকেশনের জন্য উপযোগী।
ASP.Net এ Entity Framework (EF) ব্যবহারের সময় ডেটাবেস মডেল তৈরি করার দুটি প্রধান পদ্ধতি রয়েছে: Code First এবং Database First। প্রতিটি পদ্ধতি তার নিজস্ব সুবিধা এবং বৈশিষ্ট্য নিয়ে আসে, এবং আপনাকে আপনার প্রজেক্টের প্রয়োজন অনুসারে একটি নির্বাচন করতে হয়।
Code First Approach
Code First পদ্ধতিতে, আপনি প্রথমে C# ক্লাস (মডেল) তৈরি করেন এবং পরে Entity Framework ব্যবহার করে সেই ক্লাসের ভিত্তিতে ডেটাবেস তৈরি করা হয়। এই পদ্ধতিতে আপনি আপনার মডেল ক্লাসে কোড লিখে ডেটাবেসের কাঠামো নির্ধারণ করেন এবং EF তার উপর ভিত্তি করে ডেটাবেস তৈরি করে।
Code First এর প্রধান বৈশিষ্ট্য:
- ডেটাবেস তৈরি করা হয় কোডের ভিত্তিতে: প্রথমে C# ক্লাস তৈরি করেন এবং পরে EF এই ক্লাসের ভিত্তিতে ডেটাবেস তৈরি করে।
- ডেটাবেস এবং কোড একসঙ্গে ইvolব: যখন আপনি ক্লাসে কোনো পরিবর্তন করেন, তখন মাইগ্রেশন ব্যবহার করে ডেটাবেসের কাঠামোও আপডেট করা যায়।
- ফ্লুয়েন্ট API বা ডাটা অটোট্র্যাজেকশন: মডেল ক্লাসে বিশেষভাবে ডেটাবেসের টেবিলের কাঠামো কাস্টমাইজ করা যায়।
Code First প্রক্রিয়া:
ক্লাস তৈরি করা:
- প্রথমে মডেল ক্লাস তৈরি করতে হবে। উদাহরণস্বরূপ, একটি
Productক্লাস:
public class Product { public int ProductId { get; set; } public string Name { get; set; } public decimal Price { get; set; } }- প্রথমে মডেল ক্লাস তৈরি করতে হবে। উদাহরণস্বরূপ, একটি
DbContext ক্লাস তৈরি করা:
- ডেটাবেস এবং মডেল ক্লাসের মধ্যে সংযোগ স্থাপন করতে
DbContextক্লাস তৈরি করতে হবে।
public class ApplicationDbContext : DbContext { public DbSet<Product> Products { get; set; } }- ডেটাবেস এবং মডেল ক্লাসের মধ্যে সংযোগ স্থাপন করতে
ডেটাবেস মাইগ্রেশন:
- ডেটাবেস তৈরি করার জন্য মাইগ্রেশন ব্যবহার করতে হবে। Visual Studio এর Package Manager Console এ গিয়ে মাইগ্রেশন কমান্ড রান করুন:
Add-Migration InitialCreate Update-Database- ডেটাবেস তৈরি:
- মাইগ্রেশন শেষে ডেটাবেস তৈরি হয়ে যাবে।
Code First এর সুবিধা:
- ফ্লেক্সিবিলিটি: কোডে পরিবর্তন করলে ডেটাবেসও পরিবর্তিত হয়, তাই এটি নতুন ডেভেলপমেন্ট এবং মডেল চেঞ্জ করার জন্য উপযোগী।
- প্রথমে কোড লেখার সুবিধা: কোড লেখার মাধ্যমে ডেটাবেসের কাঠামো ডিজাইন করা যায়, যা ডেভেলপারদের জন্য সুবিধাজনক।
- ডেটাবেসের সাথে সিঙ্ক্রোনাইজেশন সহজ: কোডে ছোট পরিবর্তনগুলো EF মাইগ্রেশন এর মাধ্যমে ডেটাবেসে আপডেট করা যায়।
Database First Approach
Database First পদ্ধতিতে, আপনি প্রথমে একটি ডেটাবেস তৈরি করেন এবং পরে Entity Framework ব্যবহার করে সেই ডেটাবেস থেকে C# ক্লাস জেনারেট করেন। এই পদ্ধতিতে ডেটাবেস আগেই ডিজাইন করা থাকে এবং আপনি সেই ডেটাবেসের কাঠামোকে ব্যবহার করে কোড তৈরি করেন।
Database First এর প্রধান বৈশিষ্ট্য:
- ডেটাবেস প্রস্তুত করা হয় প্রথমে: আপনি যখন ডেটাবেস তৈরি করেন, তখন EF সেই ডেটাবেস থেকে ক্লাস এবং মডেল জেনারেট করে।
- ডেটাবেসের কাঠামো কোডের উপর ভিত্তি করে নির্ধারিত হয়: ডেটাবেস পরিবর্তন হলে, কোড ক্লাসও ডেটাবেসের সাথে সিঙ্ক্রোনাইজ করতে হবে।
- ডেটাবেসের জন্য সম্পূর্ণ কন্ট্রোল: যেহেতু ডেটাবেস প্রথমে তৈরি করা হয়, সুতরাং ডেটাবেস ডিজাইন এবং কাঠামো আপনার পুরোপুরি কন্ট্রোলে থাকে।
Database First প্রক্রিয়া:
- ডেটাবেস তৈরি করা:
- প্রথমে আপনি একটি ডেটাবেস তৈরি করেন, উদাহরণস্বরূপ, SQL Server Management Studio (SSMS) বা অন্য কোনো ডেটাবেস ম্যানেজমেন্ট টুল ব্যবহার করে।
- EF থেকে ক্লাস জেনারেট করা:
- Visual Studio-তে Entity Framework এর Database First টুল ব্যবহার করে ক্লাস জেনারেট করতে হবে।
ADO.NET Entity Data Modelব্যবহার করে EF Designer বা Code First টুলের মাধ্যমে ডেটাবেসের কাঠামো অনুযায়ী ক্লাস তৈরি করা হয়।
- Visual Studio-তে Entity Framework এর Database First টুল ব্যবহার করে ক্লাস জেনারেট করতে হবে।
ডেটাবেস থেকে ক্লাস জেনারেট করার জন্য নির্দেশনা:
- EF Designer ব্যবহার করলে, ডেটাবেস টেবিলের প্রতিটি কলাম অনুযায়ী ক্লাস তৈরি হবে। এখানে আপনি টেবিলের সম্পর্ক (Foreign Key) এবং ডেটা টাইপগুলো কনফিগার করতে পারবেন।
উদাহরণ:
Add -> New Item -> ADO.NET Entity Data Model -> Generate from Database- ডেটাবেস ও কোডের মধ্যে সম্পর্ক স্থাপন:
- EF ক্লাসে
DbContextব্যবহার করে ডেটাবেসের সাথে কানেকশন স্থাপন করা হয়।
- EF ক্লাসে
Database First এর সুবিধা:
- ডেটাবেসের সাথে সম্পূর্ণ কন্ট্রোল: যদি আপনার ডেটাবেস তৈরি এবং ম্যানেজ করার জন্য কোনো DBA (Database Administrator) থাকে, তবে Database First পদ্ধতি উপযোগী।
- ডেটাবেস স্কিমা অনুযায়ী কোড তৈরি করা: যখন ডেটাবেস স্কিমা আগে থেকেই তৈরি থাকে, তখন কোড তৈরি করা দ্রুত এবং সঠিক হয়।
- ডেটাবেসের পূর্ববর্তী ডিজাইন অনুসরণ করা: যদি আপনি ইতিমধ্যে একটি ডেটাবেস ডিজাইন করে থাকেন, তাহলে Database First পদ্ধতিতে সেই ডিজাইন ধরে কোড তৈরি করতে পারবেন।
Code First এবং Database First এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Code First | Database First |
|---|---|---|
| ডেটাবেস তৈরি | কোডের মাধ্যমে ডেটাবেস তৈরি হয় | ডেটাবেস আগে থেকেই তৈরি থাকে |
| কোডের কাঠামো | ডেটাবেসের কাঠামো কোড অনুযায়ী তৈরি হয় | ডেটাবেসের কাঠামো কোড অনুযায়ী তৈরি হয় |
| ফ্লেক্সিবিলিটি | কোডে পরিবর্তন করলে ডেটাবেস আপডেট করা যায় | ডেটাবেসে পরিবর্তন করলে কোড আপডেট করতে হয় |
| মাইগ্রেশন | মাইগ্রেশন ব্যবহার করে ডেটাবেস পরিবর্তন করা যায় | মাইগ্রেশন ব্যবহার করতে হয় না, তবে ক্লাস জেনারেট করতে হয় |
| উপযুক্ত পদ্ধতি | নতুন অ্যাপ্লিকেশন অথবা মডেল পরিবর্তনের জন্য উপযোগী | ডেটাবেসে প্রাথমিক ডিজাইন করা থাকলে উপযোগী |
সারাংশ
Code First এবং Database First দুটি পদ্ধতিই Entity Framework-এ ডেটাবেস তৈরি ও পরিচালনার জন্য ব্যবহৃত হয়। Code First পদ্ধতিতে কোডের ভিত্তিতে ডেটাবেস তৈরি করা হয়, এবং Database First পদ্ধতিতে আগে থেকেই তৈরি ডেটাবেস থেকে ক্লাস তৈরি করা হয়। প্রতিটি পদ্ধতির নিজস্ব সুবিধা এবং প্রযোজ্যতা রয়েছে, এবং এটি আপনার প্রজেক্টের প্রয়োজন অনুযায়ী নির্বাচন করা উচিত।
ASP.Net অ্যাপ্লিকেশনে মডেল হল একটি ক্লাস যা ডাটাবেজ টেবিলের সাথে সম্পর্কিত ডেটা ধারণ করে। Entity Framework Core (EF Core) ব্যবহার করে আপনি মডেল তৈরি করতে পারেন এবং তা ডাটাবেজ টেবিলের সাথে ম্যাপ করতে পারেন। EF Core একটি ORM (Object Relational Mapping) ফ্রেমওয়ার্ক, যা আপনার C# মডেল ক্লাসগুলোকে ডাটাবেজ টেবিলের সাথে সংযুক্ত করে।
এই টিউটোরিয়ালে আমরা মডেল তৈরি, ডাটাবেজের সাথে ম্যাপিং এবং ডাটাবেজে CRUD (Create, Read, Update, Delete) অপারেশন কীভাবে করতে হয় তা আলোচনা করব।
১. মডেল তৈরি করা
প্রথমে, মডেল ক্লাস তৈরি করতে হয় যা ডাটাবেজ টেবিলের প্রতিনিধিত্ব করবে।
উদাহরণ:
ধরা যাক, আমাদের একটি Product নামের মডেল ক্লাস তৈরি করতে হবে যা একটি প্রোডাক্টের নাম, দাম এবং স্টক কোয়ান্টিটি ধারণ করবে।
public class Product
{
public int Id { get; set; } // Primary Key
public string Name { get; set; } // Product Name
public decimal Price { get; set; } // Product Price
public int Stock { get; set; } // Product Stock Quantity
}
এখানে Product ক্লাসটি একটি প্রোডাক্ট টেবিলের প্রতিনিধিত্ব করছে। Id ফিল্ডটি ডাটাবেজের প্রাইমারি কি হিসেবে ব্যবহৃত হবে।
২. DbContext ক্লাস তৈরি করা
ডাটাবেজের সাথে যোগাযোগ করতে DbContext ক্লাস ব্যবহার করা হয়। এটি EF Core এর মূল অংশ, যা ডাটাবেজের সাথে CRUD অপারেশন পরিচালনা করে।
উদাহরণ:
ApplicationDbContext ক্লাসে ডাটাবেজের সাথে সংযোগ স্থাপন করা হয়।
using Microsoft.EntityFrameworkCore;
public class ApplicationDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { }
}
এখানে, DbSet<Product> ফিল্ডটি Product মডেল ক্লাসের টেবিলের প্রতিনিধিত্ব করছে। যখন EF Core কনফিগারেশন করা হয়, তখন এই DbSet টেবিলের রেকর্ডগুলোর সাথে CRUD অপারেশন পরিচালনা করবে।
৩. ডাটাবেজ কনফিগারেশন এবং Migration
ডাটাবেজ কনফিগার করার জন্য প্রথমে Connection String সেট করতে হবে এবং পরে ডাটাবেজ তৈরি করতে Migration কমান্ড ব্যবহার করা হবে।
১. Connection String সেট করা
appsettings.json ফাইলে ডাটাবেজ কনফিগারেশন এবং সংযোগ সেট করুন।
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=ProductDb;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}
এখানে, DefaultConnection এ localdb ব্যবহার করা হয়েছে, তবে আপনি আপনার ডাটাবেজ সার্ভার এবং নাম পরিবর্তন করতে পারেন।
২. DbContext কনফিগারেশন
Startup.cs ফাইলে DbContext কনফিগার করুন যাতে ডাটাবেজের সাথে সংযোগ স্থাপন করা যায়।
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
এখানে, UseSqlServer মেথডের মাধ্যমে SQL Server ডাটাবেজ ব্যবহার করা হচ্ছে।
৩. Migration তৈরি করা
এখন, Migration তৈরি করতে হবে যাতে আপনার মডেল ক্লাসকে ডাটাবেজের টেবিলের সাথে ম্যাপ করা যায়। টার্মিনাল বা প্যাকেজ ম্যানেজার কনসোল থেকে নিম্নলিখিত কমান্ড চালান:
dotnet ef migrations add InitialCreate
dotnet ef database update
এখানে, প্রথম কমান্ডটি ডাটাবেজের জন্য একটি মাইগ্রেশন তৈরি করবে এবং দ্বিতীয় কমান্ডটি ডাটাবেজে মাইগ্রেশন চালিয়ে টেবিল তৈরি করবে।
৪. CRUD অপারেশন (Create, Read, Update, Delete)
১. Create (ডেটা ইনসার্ট করা)
ডাটাবেজে নতুন রেকর্ড ইনসার্ট করতে Add মেথড ব্যবহার করা হয়।
public class ProductController : Controller
{
private readonly ApplicationDbContext _context;
public ProductController(ApplicationDbContext context)
{
_context = context;
}
[HttpPost]
public IActionResult Create(Product product)
{
if (ModelState.IsValid)
{
_context.Add(product);
_context.SaveChanges(); // ডাটাবেজে সংরক্ষণ
return RedirectToAction(nameof(Index));
}
return View(product);
}
}
এখানে, _context.Add(product) ব্যবহার করে নতুন প্রোডাক্ট ডাটাবেজে ইনসার্ট করা হচ্ছে।
২. Read (ডেটা পড়া)
ডাটাবেজ থেকে ডেটা পড়তে Find বা ToList মেথড ব্যবহার করা হয়।
public IActionResult Index()
{
var products = _context.Products.ToList(); // সমস্ত প্রোডাক্ট নিয়ে আসা
return View(products);
}
এখানে _context.Products.ToList() ব্যবহার করে সমস্ত প্রোডাক্টগুলো ডাটাবেজ থেকে নিয়ে আসা হচ্ছে।
৩. Update (ডেটা আপডেট করা)
ডেটা আপডেট করতে Update মেথড ব্যবহার করা হয়।
[HttpPost]
public IActionResult Edit(int id, Product product)
{
if (id != product.Id)
{
return NotFound();
}
if (ModelState.IsValid)
{
_context.Update(product); // প্রোডাক্ট আপডেট করা
_context.SaveChanges();
return RedirectToAction(nameof(Index));
}
return View(product);
}
এখানে, _context.Update(product) ব্যবহার করে প্রোডাক্টের ডেটা আপডেট করা হচ্ছে।
৪. Delete (ডেটা মুছে ফেলা)
ডেটা মুছে ফেলতে Remove মেথড ব্যবহার করা হয়।
public IActionResult Delete(int id)
{
var product = _context.Products.Find(id); // ডাটাবেজ থেকে প্রোডাক্ট খুঁজে বের করা
if (product == null)
{
return NotFound();
}
_context.Products.Remove(product); // প্রোডাক্ট মুছে ফেলা
_context.SaveChanges();
return RedirectToAction(nameof(Index));
}
এখানে, _context.Products.Remove(product) ব্যবহার করে প্রোডাক্ট মুছে ফেলা হচ্ছে।
সারাংশ
ASP.Net MVC অ্যাপ্লিকেশনে Entity Framework Core ব্যবহার করে মডেল তৈরি করা এবং ডাটাবেজের সাথে ম্যাপিং করা খুবই সহজ। মডেল ক্লাসে ডেটা কনফিগারেশন এবং DbContext এর মাধ্যমে CRUD অপারেশন করা যায়। EF Core এর Migration ফিচার ডাটাবেজ টেবিলগুলি তৈরি এবং আপডেট করতে সাহায্য করে।
LINQ (Language Integrated Query) হল একটি শক্তিশালী ফিচার যা C# এবং .NET ফ্রেমওয়ার্কে ডেটা অনুসন্ধান এবং প্রক্রিয়া করার জন্য ব্যবহৃত হয়। LINQ ব্যবহার করে, ডেভেলপাররা ডেটাবেস, XML, কলেকশন বা অন্য যেকোনো ডেটা সোর্স থেকে ডেটা সহজে এবং কার্যকরীভাবে প্রশ্ন করতে পারেন।
LINQ কোডে SQL-এর মতো কোড লেখার সুবিধা প্রদান করে, তবে এটি C# বা VB.NET এর মধ্যে ইনলাইন কোড হিসেবে ব্যবহৃত হয়। LINQ ব্যবহার করে, ডেটা সংগ্রহ এবং প্রক্রিয়া করার সময় টাইপ সেফ কোড লেখা সম্ভব হয়, যা কম্বাইন করা যায় অন্যান্য C# কোডের সাথে।
LINQ এর মূল ধারণা
LINQ, C# ভাষার অংশ হিসেবে কাজ করে এবং এটি Query (অনুসন্ধান) কাজগুলোকে খুব সহজ এবং কোড লেখার সময়ই টেস্ট করতে দেয়। LINQ সাধারণত IEnumerable বা IQueryable ইন্টারফেসের সাথে কাজ করে, যা ডেটার উপর বিভিন্ন ধরনের কুয়েরি অপারেশন যেমন: Select, Where, OrderBy, GroupBy প্রভৃতি প্রয়োগ করতে সহায়তা করে।
LINQ সাধারণত দুটি পদ্ধতিতে ব্যবহার করা হয়:
- Method Syntax (Method-based LINQ)
- Query Syntax (SQL-like LINQ)
LINQ Method Syntax
এটি LINQ এর সাধারণ পদ্ধতি যেখানে আপনি method chaining এর মাধ্যমে বিভিন্ন অপারেশন একত্রে ব্যবহার করতে পারেন।
উদাহরণ:
using System;
using System.Linq;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
// একটি sample collection
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// LINQ Method Syntax ব্যবহার করে সব সংখ্যার মধ্যে even সংখ্যা বের করা
var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
Console.WriteLine("Even Numbers: ");
foreach (var number in evenNumbers)
{
Console.WriteLine(number);
}
}
}
এখানে Where মেথডটি numbers কলেকশনের মধ্যে এমন সংখ্যাগুলো বের করে যেগুলি even (যা ২ দিয়ে বিভাজ্য)। ToList() মেথডটি এটি একটি List এ রূপান্তরিত করে।
LINQ Query Syntax
Query Syntax প্রায় SQL এর মতো লাগে এবং এটি LINQ-এর একটি declarative শৈলী। LINQ Query Syntax C#-এ ডেটা অনুসন্ধানের জন্য একটি SQL-এর মতো স্টাইল তৈরি করে।
উদাহরণ:
using System;
using System.Linq;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
// একটি sample collection
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// LINQ Query Syntax ব্যবহার করে সব সংখ্যার মধ্যে even সংখ্যা বের করা
var evenNumbers = from n in numbers
where n % 2 == 0
select n;
Console.WriteLine("Even Numbers: ");
foreach (var number in evenNumbers)
{
Console.WriteLine(number);
}
}
}
এখানে from, where, এবং select কীওয়ার্ডগুলোর মাধ্যমে SQL-এর মতো স্টাইলের কোড ব্যবহার করা হয়েছে।
LINQ to SQL: ডেটাবেসের সাথে LINQ ব্যবহার
LINQ-কে ডেটাবেসের সাথে ইন্টিগ্রেট করাও সম্ভব, এবং এটি খুবই শক্তিশালী। LINQ-to-SQL এবং LINQ-to-Entities ব্যবহারের মাধ্যমে আপনি SQL কোডের মতো LINQ কোড লিখে ডেটাবেসের সাথে কাজ করতে পারেন।
উদাহরণ: LINQ to SQL
using System;
using System.Linq;
public class Program
{
public static void Main()
{
using (var context = new MyDatabaseContext())
{
// LINQ-to-SQL ব্যবহার করে ডেটাবেসের সকল records নিয়ে আসা
var query = from p in context.Products
where p.Price > 100
select p;
foreach (var product in query)
{
Console.WriteLine($"Product Name: {product.Name}, Price: {product.Price}");
}
}
}
}
এখানে MyDatabaseContext একটি Entity Framework DbContext যা ডেটাবেসের সাথে সংযুক্ত। LINQ কোড ডেটাবেস থেকে Products টেবিলের সব রেকর্ড বের করে, যেখানে পণ্যের মূল্য ১০০-এর বেশি।
LINQ এর কিছু সাধারণ অপারেশন
Where: নির্দিষ্ট শর্তের উপর ভিত্তি করে ডেটা ফিল্টার করতে ব্যবহৃত হয়।
var result = numbers.Where(n => n > 5);Select: ডেটার একটি নির্দিষ্ট অংশ নির্বাচন করতে ব্যবহৃত হয়।
var names = people.Select(p => p.Name);OrderBy: ডেটাকে একটি নির্দিষ্ট অর্ডারে সাজাতে ব্যবহৃত হয়।
var orderedNumbers = numbers.OrderBy(n => n);GroupBy: ডেটাকে গ্রুপ করতে ব্যবহৃত হয়।
var groupedNumbers = numbers.GroupBy(n => n % 2 == 0);Join: দুটি ডেটাসেটের মধ্যে যোগ করতে ব্যবহৃত হয়।
var result = from order in orders join product in products on order.ProductId equals product.Id select new { order.OrderId, product.Name };
LINQ-এর সুবিধাসমূহ
- টাইপ সেফ কোড: LINQ কোড কম্পাইল টাইমে প্রকার পরীক্ষা করে, যা ডেভেলপারদের ভুল কোড থেকে বাঁচায়।
- লজিক্যাল এবং স্পষ্ট কোড: LINQ কোড সাধারণত খুব পরিষ্কার এবং সহজভাবে লেখা যায়।
- মাল্টিপল ডেটা সোর্সের জন্য সমর্থন: LINQ একাধিক ডেটা সোর্স (মেমরি, ডেটাবেস, XML, ইত্যাদি) এর সাথে কাজ করতে সক্ষম।
LINQ-এর সাহায্যে আপনি আপনার অ্যাপ্লিকেশনটির ডেটা প্রক্রিয়াকরণ আরও কার্যকরী, সহজ এবং দ্রুত করতে পারবেন।
CRUD অপারেশনস (Create, Read, Update, Delete) হল ডেটাবেস ম্যানেজমেন্ট সিস্টেমের মৌলিক কার্যক্রম, যা ডেটাবেসে ডেটা তৈরি, পড়া, আপডেট করা এবং মুছে ফেলার কাজ করে। ASP.Net অ্যাপ্লিকেশনে CRUD অপারেশনগুলো সাধারণত Entity Framework (EF) ব্যবহার করে বাস্তবায়িত করা হয়।
এখানে ASP.Net Core MVC অ্যাপ্লিকেশন ব্যবহার করে CRUD অপারেশনগুলো কিভাবে করা যায় তা ব্যাখ্যা করা হলো।
১. Create (ডেটা তৈরি করা)
Create অপারেশন নতুন ডেটা রেকর্ড তৈরি করতে ব্যবহৃত হয়। একটি ফর্মের মাধ্যমে ব্যবহারকারী ডেটা ইনপুট করে এবং তা ডাটাবেসে সেভ করা হয়।
Controller Method (Create)
public class ProductController : Controller
{
private readonly ApplicationDbContext _context;
public ProductController(ApplicationDbContext context)
{
_context = context;
}
// GET: Product/Create
public IActionResult Create()
{
return View();
}
// POST: Product/Create
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Id,Name,Price")] Product product)
{
if (ModelState.IsValid)
{
_context.Add(product); // Add new product to the context
await _context.SaveChangesAsync(); // Save changes to the database
return RedirectToAction(nameof(Index)); // Redirect to the Index action
}
return View(product);
}
}
Create View (Create.cshtml)
@model Product
<h2>Create Product</h2>
<form asp-action="Create" method="post">
<div class="form-group">
<label asp-for="Name"></label>
<input asp-for="Name" class="form-control" />
</div>
<div class="form-group">
<label asp-for="Price"></label>
<input asp-for="Price" class="form-control" />
</div>
<button type="submit" class="btn btn-primary">Create</button>
</form>
২. Read (ডেটা পড়া)
Read অপারেশন ব্যবহারকারীকে ডেটাবেস থেকে ডেটা দেখানোর জন্য ব্যবহৃত হয়। সাধারণত Index অ্যাকশনে ডেটা রিটার্ন করা হয়।
Controller Method (Read)
public async Task<IActionResult> Index()
{
var products = await _context.Products.ToListAsync(); // Fetch all products from the database
return View(products);
}
Index View (Index.cshtml)
@model IEnumerable<Product>
<h2>Product List</h2>
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Price</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
@foreach (var product in Model)
{
<tr>
<td>@product.Name</td>
<td>@product.Price</td>
<td>
<a href="@Url.Action("Edit", new { id = product.Id })">Edit</a> |
<a href="@Url.Action("Delete", new { id = product.Id })">Delete</a>
</td>
</tr>
}
</tbody>
</table>
৩. Update (ডেটা আপডেট করা)
Update অপারেশন ব্যবহারকারীর ইনপুটের মাধ্যমে ডেটাবেসে থাকা একটি রেকর্ড পরিবর্তন করতে ব্যবহৃত হয়।
Controller Method (Update)
// GET: Product/Edit/5
public async Task<IActionResult> Edit(int? id)
{
if (id == null)
{
return NotFound();
}
var product = await _context.Products.FindAsync(id); // Find the product by id
if (product == null)
{
return NotFound();
}
return View(product);
}
// POST: Product/Edit/5
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(int id, [Bind("Id,Name,Price")] Product product)
{
if (id != product.Id)
{
return NotFound();
}
if (ModelState.IsValid)
{
try
{
_context.Update(product); // Update the product in the context
await _context.SaveChangesAsync(); // Save changes to the database
}
catch (DbUpdateConcurrencyException)
{
if (!ProductExists(product.Id))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToAction(nameof(Index)); // Redirect to Index page
}
return View(product);
}
Edit View (Edit.cshtml)
@model Product
<h2>Edit Product</h2>
<form asp-action="Edit">
<div class="form-group">
<label asp-for="Name"></label>
<input asp-for="Name" class="form-control" />
</div>
<div class="form-group">
<label asp-for="Price"></label>
<input asp-for="Price" class="form-control" />
</div>
<button type="submit" class="btn btn-primary">Update</button>
</form>
৪. Delete (ডেটা মুছে ফেলা)
Delete অপারেশন ব্যবহারকারীর থেকে একটি নিশ্চিতকরণের পর ডেটাবেস থেকে একটি রেকর্ড মুছে ফেলে।
Controller Method (Delete)
// GET: Product/Delete/5
public async Task<IActionResult> Delete(int? id)
{
if (id == null)
{
return NotFound();
}
var product = await _context.Products
.FirstOrDefaultAsync(m => m.Id == id); // Find the product by id
if (product == null)
{
return NotFound();
}
return View(product);
}
// POST: Product/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> DeleteConfirmed(int id)
{
var product = await _context.Products.FindAsync(id); // Find the product
_context.Products.Remove(product); // Remove the product
await _context.SaveChangesAsync(); // Save changes to the database
return RedirectToAction(nameof(Index)); // Redirect to Index page
}
Delete View (Delete.cshtml)
@model Product
<h2>Delete Product</h2>
<h3>Are you sure you want to delete this product?</h3>
<div>
<h4>@Model.Name</h4>
<p>Price: @Model.Price</p>
</div>
<form asp-action="DeleteConfirmed">
<button type="submit" class="btn btn-danger">Delete</button>
<a href="@Url.Action("Index")" class="btn btn-secondary">Cancel</a>
</form>
সারসংক্ষেপ
ASP.Net Core MVC অ্যাপ্লিকেশনে CRUD অপারেশনগুলি খুব সহজেই Entity Framework Core এর মাধ্যমে বাস্তবায়ন করা যায়। এই প্রক্রিয়াটি Create, Read, Update, এবং Delete অপারেশনগুলি পরিচালনা করতে সাহায্য করে, যা ডেটাবেসে রেকর্ড সংরক্ষণ, প্রদর্শন, পরিবর্তন, এবং মুছে ফেলার কাজ করে।
ASP.Net Core অ্যাপ্লিকেশনগুলিতে ডাটাবেসের সাথে কাজ করার জন্য Entity Framework Core ব্যবহৃত হয়। মাইগ্রেশন এবং ডাটাবেজ আপডেট হলো ডাটাবেস স্কিমা (schema) পরিবর্তন এবং পরিচালনার জন্য গুরুত্বপূর্ণ পদক্ষেপ। Entity Framework Core ব্যবহার করে আপনি ডাটাবেসের কাঠামো (schema) পরিবর্তন, নতুন টেবিল বা কলাম যোগ করা, এবং ডাটাবেস আপডেট করতে পারেন।
১. Entity Framework Core এবং মাইগ্রেশন
Entity Framework Core (EF Core) একটি ORM (Object-Relational Mapping) টুল, যা .NET অ্যাপ্লিকেশনগুলির জন্য ডাটাবেস অ্যাক্সেস সহজ করে। মাইগ্রেশন ব্যবহারের মাধ্যমে, আপনি ডাটাবেসের কাঠামোর পরিবর্তন বা আপডেট পরিচালনা করতে পারেন, এবং এই পরিবর্তনগুলি ডাটাবেসে ডাটাবেস স্কিমা হিসেবে বাস্তবায়িত হয়।
২. মাইগ্রেশন তৈরি করা
মাইগ্রেশন হল একটি পরিবর্তন যা আপনার ডাটাবেসের কাঠামো (যেমন টেবিল, কলাম) পরিবর্তন করে, এবং এটি EF Core ব্যবহার করে স্বয়ংক্রিয়ভাবে তৈরি করা যায়।
১.1. মাইগ্রেশন তৈরি করার জন্য প্রয়োজনীয় প্রস্তুতি
- প্রথমে, আপনার ডাটাবেস কনটেক্সট (
DbContext) ফাইল এবং মডেল ক্লাসগুলো তৈরি করতে হবে। - Microsoft.EntityFrameworkCore.Tools প্যাকেজ ইনস্টল করা নিশ্চিত করুন। আপনি এটি NuGet Package Manager বা .NET CLI এর মাধ্যমে ইনস্টল করতে পারেন।
১.2. মাইগ্রেশন তৈরি করা
- NuGet Package Manager Console থেকে:
- Visual Studio > Tools > NuGet Package Manager > Package Manager Console এ যান।
মাইগ্রেশন কমান্ড টাইপ করুন:
Add-Migration <MigrationName>উদাহরণ:
Add-Migration InitialCreateএখানে,
InitialCreateহলো মাইগ্রেশনের নাম। আপনি এই নামটি পরিবর্তন করে আপনার প্রোজেক্টের জন্য উপযুক্ত রাখতে পারেন।
- .NET CLI ব্যবহার করে:
Command Prompt বা Terminal থেকে আপনার প্রজেক্টের ডিরেক্টরিতে যান এবং নিচের কমান্ডটি চালান:
dotnet ef migrations add <MigrationName>
১.3. মাইগ্রেশন ফাইল
যখন আপনি Add-Migration কমান্ড চালাবেন, তখন একটি নতুন মাইগ্রেশন ফাইল তৈরি হবে, যা ডাটাবেসের কাঠামো পরিবর্তনের কোড ধারণ করবে। উদাহরণস্বরূপ:
public partial class InitialCreate : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Products",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Name = table.Column<string>(nullable: true),
Price = table.Column<decimal>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Products", x => x.Id);
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Products");
}
}
এই কোডটি Products নামক একটি টেবিল তৈরি করবে, যেখানে Id, Name, এবং Price কলাম থাকবে।
৩. ডাটাবেস আপডেট করা
একবার মাইগ্রেশন ফাইল তৈরি হয়ে গেলে, আপনাকে ডাটাবেস আপডেট করতে হবে যাতে মাইগ্রেশনটি ডাটাবেসে প্রতিফলিত হয়।
৩.1. ডাটাবেস আপডেট করার জন্য কমান্ড
- NuGet Package Manager Console থেকে:
- Visual Studio > Tools > NuGet Package Manager > Package Manager Console এ যান।
ডাটাবেস আপডেট করার জন্য নিচের কমান্ডটি চালান:
Update-Database- এটি আপনার ডাটাবেসে মাইগ্রেশন পরিবর্তনগুলো প্রয়োগ করবে।
- .NET CLI থেকে:
Command Prompt বা Terminal থেকে, ডাটাবেস আপডেট করতে নিচের কমান্ডটি চালান:
dotnet ef database update
এই কমান্ডটি ডাটাবেসে সমস্ত মাইগ্রেশন পরিবর্তন (যেমন নতুন টেবিল বা কলাম যোগ করা) প্রয়োগ করবে।
৪. ডাটাবেসের বর্তমান অবস্থা পরীক্ষা করা
আপনি যদি জানতে চান যে কোন মাইগ্রেশনটি ইতোমধ্যে ডাটাবেসে প্রয়োগ হয়েছে, তবে আপনি নিচের কমান্ডটি ব্যবহার করতে পারেন:
NuGet Package Manager Console:
Get-Migration.NET CLI:
dotnet ef migrations list
৫. মাইগ্রেশন বাতিল করা
যদি আপনি কোনো মাইগ্রেশন বাতিল করতে চান, তবে আপনি Remove-Migration কমান্ড ব্যবহার করতে পারেন। তবে এটি শুধুমাত্র যদি মাইগ্রেশনটি এখনও ডাটাবেসে আপডেট না হয়ে থাকে তবেই কাজ করবে।
Remove-Migration
৬. সারসংক্ষেপ
মাইগ্রেশন এবং ডাটাবেস আপডেটের মাধ্যমে, Entity Framework Core আপনার ডাটাবেস কাঠামো এবং অ্যাপ্লিকেশনের মধ্যে সুসংগততা বজায় রাখতে সহায়তা করে। মাইগ্রেশন ব্যবহার করে আপনি ডাটাবেসের পরিবর্তনগুলি পরিচালনা করতে পারেন এবং সহজেই ডাটাবেসের কাঠামো আপডেট করতে পারেন, যার ফলে অ্যাপ্লিকেশনটির রক্ষণাবেক্ষণ সহজ এবং স্কেলযোগ্য হয়।
Read more