Untitled
unknown
plain_text
5 months ago
4.8 kB
4
Indexable
{ "ConnectionStrings": { "DefaultConnection": "server=localhost;database=MyCrudAppDB;user=root;password=YourPassword;" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*" } using System.ComponentModel.DataAnnotations; public class Product { public int Id { get; set; } [Required] public string Name { get; set; } public int Quantity { get; set; } public decimal Price { get; set; } } using Microsoft.EntityFrameworkCore; public class ApplicationDbContext : DbContext { public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { } public DbSet<Product> Products { get; set; } } public void ConfigureServices(IServiceCollection services) { services.AddDbContext<ApplicationDbContext>(options => options.UseMySql(Configuration.GetConnectionString("DefaultConnection"), new MySqlServerVersion(new Version(8, 0, 21)))); services.AddControllersWithViews(); } dotnet ef migrations add InitialCreate dotnet ef database update using Microsoft.AspNetCore.Mvc; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; public class ProductsController : Controller { private readonly ApplicationDbContext _context; public ProductsController(ApplicationDbContext context) { _context = context; } // GET: Products public async Task<IActionResult> Index() { return View(await _context.Products.ToListAsync()); } // GET: Products/Create public IActionResult Create() { return View(); } // POST: Products/Create [HttpPost] [ValidateAntiForgeryToken] public async Task<IActionResult> Create([Bind("Id,Name,Quantity,Price")] Product product) { if (ModelState.IsValid) { _context.Add(product); await _context.SaveChangesAsync(); return RedirectToAction(nameof(Index)); } return View(product); } // GET: Products/Edit/5 public async Task<IActionResult> Edit(int? id) { if (id == null) { return NotFound(); } var product = await _context.Products.FindAsync(id); if (product == null) { return NotFound(); } return View(product); } // POST: Products/Edit/5 [HttpPost] [ValidateAntiForgeryToken] public async Task<IActionResult> Edit(int id, [Bind("Id,Name,Quantity,Price")] Product product) { if (id != product.Id) { return NotFound(); } if (ModelState.IsValid) { try { _context.Update(product); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ProductExists(product.Id)) { return NotFound(); } else { throw; } } return RedirectToAction(nameof(Index)); } return View(product); } // GET: Products/Delete/5 public async Task<IActionResult> Delete(int? id) { if (id == null) { return NotFound(); } var product = await _context.Products .FirstOrDefaultAsync(m => m.Id == id); if (product == null) { return NotFound(); } return View(product); } // POST: Products/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public async Task<IActionResult> DeleteConfirmed(int id) { var product = await _context.Products.FindAsync(id); _context.Products.Remove(product); await _context.SaveChangesAsync(); return RedirectToAction(nameof(Index)); } private bool ProductExists(int id) { return _context.Products.Any(e => e.Id == id); } } @model IEnumerable<Product> <h2>Products</h2> <table class="table"> <thead> <tr> <th>Name</th> <th>Quantity</th> <th>Price</th> <th></th> </tr> </thead> <tbody> @foreach (var item in Model) { <tr> <td>@item.Name</td> <td>@item.Quantity</td> <td>@item.Price</td> <td> <a asp-action="Edit" asp-route-id="@item.Id">Edit</a> | <a asp-action="Delete" asp-route-id="@item.Id">Delete</a> </td> </tr> } </tbody> </table> <a asp-action="Create">Create New Product</a>
Editor is loading...
Leave a Comment