dotnet tool install --global dotnet-ef
dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet ef migrations add InitialCreate
dotnet ef database update
Create .NET console project called “LearnEF”
namespace LearnEF.Models
{
internal class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
}
using Microsoft.EntityFrameworkCore;
namespace LearnEF.Models
{
internal class AppDbContext : DbContext
{
public DbSet<Product> Products { get; set; } // Represents the "Products" table
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=localhost;Database=learnef;User Id=sa;Password=1234;Trusted_Connection=True;TrustServerCertificate=True;");
}
}
}
using LearnEF.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnEF.Repositories
{
internal interface IProductRepository
{
void Add(Product product);
IEnumerable<Product> GetAll();
using LearnEF.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LearnEF.Repositories
{
internal class ProductRepository : IProductRepository
{
private readonly AppDbContext _context;
public ProductRepository(AppDbContext context)
{
_context = context;
}
public void Add(Product product) {
_context.Products.Add(product);
_context.SaveChanges();
}
public void Update(Product product) {
_context.Products.Update(product);
_context.SaveChanges();
}
public Product? GetByName(string name)
{
return _context.Products.FirstOrDefault(p => p.Name == name);
}
public void Delete(Product product) {
_context.Products.Remove(product);
_context.SaveChanges();
}
public IEnumerable<Product> GetAll() {
return _context.Products;
}
}
}
using LearnEF.Models;
using LearnEF.Repositories;
class Program
{
static void Main(string[] args)
{
using (var context = new AppDbContext())
{
var repo = new ProductRepository(context);
while (true)
{
Console.WriteLine("\n=== PRODUCT MENU ===");
Console.WriteLine("1. Read Data");
Console.WriteLine("2. Insert Data");
Console.WriteLine("3. Update Data");
Console.WriteLine("4. Delete Data");
Console.WriteLine("5. Get By Name");
Console.WriteLine("0. Exit");
Console.Write("Choose menu: ");
var choice = Console.ReadLine();
switch (choice)
{
case "1": // READ
var products = repo.GetAll();
Console.WriteLine("\n--- Product Data ---");
foreach (var p in products)
Console.WriteLine($"{p.Id} | {p.Name} - {p.Price}");
break;
case "2": // INSERT
Console.Write("Product Name: ");
string name = Console.ReadLine() ?? "";
Console.Write("Product Price: ");
decimal price;
decimal.TryParse(Console.ReadLine(), out price);
var newProduct = new Product { Name = name, Price = price };
repo.Add(newProduct);
Console.WriteLine("Product added successfully.");
break;
case "3": // UPDATE
Console.Write("Enter product name to update: ");
string updateName = Console.ReadLine() ?? "";
var existing = repo.GetByName(updateName);
if (existing != null)
{
Console.Write("New Price: ");
decimal newPrice;
decimal.TryParse(Console.ReadLine(), out newPrice);
existing.Price = newPrice;
repo.Update(existing);
Console.WriteLine("Product updated successfully.");
}
else
{
Console.WriteLine("Product not found.");
}
break;
case "4": // DELETE
Console.Write("Enter product name to delete: ");
string deleteName = Console.ReadLine() ?? "";
var toDelete = repo.GetByName(deleteName);
if (toDelete != null)
{
repo.Delete(toDelete);
Console.WriteLine("Product deleted successfully.");
}
else
{
Console.WriteLine("Product not found.");
}
break;
case "5": // GET BY NAME
Console.Write("Enter product name: ");
string searchName = Console.ReadLine() ?? "";
var product = repo.GetByName(searchName);
if (product != null)
{
Console.WriteLine($"Found: {product.Id} | {product.Name} - {product.Price}");
}
else
{
Console.WriteLine("Product not found.");
}
break;
case "0": // EXIT
Console.WriteLine("Exiting program...");
return;
default:
Console.WriteLine("Invalid choice.");
break;
}
}
}
}
}