CRUD অপারেশনস (Create, Read, Update, Delete) হল ডেটাবেস ম্যানেজমেন্ট সিস্টেমের মৌলিক কার্যক্রম, যা ডেটাবেসে ডেটা তৈরি, পড়া, আপডেট করা এবং মুছে ফেলার কাজ করে। ASP.Net অ্যাপ্লিকেশনে CRUD অপারেশনগুলো সাধারণত Entity Framework (EF) ব্যবহার করে বাস্তবায়িত করা হয়।
এখানে ASP.Net Core MVC অ্যাপ্লিকেশন ব্যবহার করে CRUD অপারেশনগুলো কিভাবে করা যায় তা ব্যাখ্যা করা হলো।
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);
}
}
@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 অপারেশন ব্যবহারকারীকে ডেটাবেস থেকে ডেটা দেখানোর জন্য ব্যবহৃত হয়। সাধারণত Index অ্যাকশনে ডেটা রিটার্ন করা হয়।
public async Task<IActionResult> Index()
{
var products = await _context.Products.ToListAsync(); // Fetch all products from the database
return View(products);
}
@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 অপারেশন ব্যবহারকারীর ইনপুটের মাধ্যমে ডেটাবেসে থাকা একটি রেকর্ড পরিবর্তন করতে ব্যবহৃত হয়।
// 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);
}
@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 অপারেশন ব্যবহারকারীর থেকে একটি নিশ্চিতকরণের পর ডেটাবেস থেকে একটি রেকর্ড মুছে ফেলে।
// 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
}
@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 অপারেশনগুলি পরিচালনা করতে সাহায্য করে, যা ডেটাবেসে রেকর্ড সংরক্ষণ, প্রদর্শন, পরিবর্তন, এবং মুছে ফেলার কাজ করে।