Exercice : Manipulation d'Entity Framework dans un programme console

Objectif :

L'objectif de cet exercice est de vous familiariser avec Entity Framework (EF), un ORM (Object-Relational Mapper) populaire pour .NET, en créant et manipulant une base de données à partir d'un programme console. Vous allez apprendre à configurer EF, à créer des entités, à configurer un DbContext, à effectuer des opérations CRUD (Create, Read, Update, Delete), et à interroger la base de données en utilisant LINQ.

Étapes :

1. Création du projet :

2. Configuration d'Entity Framework :



        using Microsoft.EntityFrameworkCore;

        namespace Ex06_EntityFramework.Models
        {
            public class ApplicationDbContext : DbContext
            {
                public DbSet Warehouses { get; set; }
                public DbSet
Articles { get; set; } public DbSet Orders { get; set; } public DbSet OrderDetails { get; set; } public ApplicationDbContext() { } public ApplicationDbContext(DbContextOptions options) : base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=Ex06_EntityFramework;Trusted_Connection=True;"); } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity() .HasMany(o => o.OrderDetails) .WithOne(od => od.Order) .HasForeignKey(od => od.OrderId); modelBuilder.Entity() .HasOne(od => od.Article) .WithMany() .HasForeignKey(od => od.ArticleId); modelBuilder.Entity() .Property(e => e.CodeAccesMD5) .HasConversion(v => string.Join(";", v), v => v.Split(new[] { ';' }, StringSplitOptions.None).ToList()); } } }

3. Migration et création de la base de données :

Add-Migration InitialCreate
Update-Database

4. Remplissage de la base de données :

using Ex06_EntityFramework.Models;

        internal class Program
        {
            private static void Main(string[] args)
            {
                InsertDefaultData();
            }
        
        
            private static void InsertDefaultData()
            {
                using (var context = new ApplicationDbContext())
                {
                    var warehouse = new Warehouse
                    {
                        Name = "Entrepot de Paris",
                        Address = "10 rue du csharp",
                        PostalCode = 75000,
                        CodeAccesMD5 = new List
                                {
                                     "840e998a22948adf5de39bd4f2b35da7" ,
                                   "74b87337454200d4d33f80c4663dc5e5" 
                                }
                    };
        
                    var articles = new List
{ new Article { Name = "Ordinateur Portable", Description = "Ordinateur portable haute performance", Price = 1200.00m, StockQuantity = 50 }, new Article { Name = "Smartphone", Description = "Smartphone avec écran AMOLED", Price = 800.00m, StockQuantity = 100 }, new Article { Name = "Tablette", Description = "Tablette 10 pouces avec stylet", Price = 600.00m, StockQuantity = 30 } }; var orders = new List { new Order { Warehouse = warehouse, CustomerId = 1, Email = "johndoe@example.com", ShippingAddress = "123 Main Street", OrderDate = DateTime.Now, TotalAmount = 2000.00d, OrderStatus = "Processing", OrderDetails = new List { new OrderDetail { Article = articles[1], Quantity = 1, UnitPrice = 1200.00m }, new OrderDetail { Article = articles[1], Quantity = 1, UnitPrice = 800.00m } } }, new Order { Warehouse = warehouse, CustomerId = 2, Email = "bill.gate@example.com", ShippingAddress = "One Microsoft Way", OrderDate = DateTime.Now, TotalAmount = 2000.00d, OrderStatus = "Processing", OrderDetails = new List { new OrderDetail { Article = articles[2], Quantity = 1, UnitPrice = 800.00m } } } }; context.Warehouses.Add(warehouse); context.Articles.AddRange(articles); context.Orders.AddRange(orders); context.SaveChanges(); } } }
  • Exécutez votre programme.
  • Exemple pour obtenir tous les articles :

    static void DisplayAllArticles()
        {
            using (var context = new ApplicationDbContext())
            {
                var articles = context.Articles.ToList();
                foreach (var article in articles)
                {
                    Console.WriteLine($"ID: {article.Id}, Name: {article.Name}, Price: {article.Price}, NbStock: {article.StockQuantity}");
                }
            }
        }

    5. Manipulation des données :

  • Respectez les bonnes pratiques d'architecture et de programmation.
  • Implémentez les classes concrétes de ces interfaces.
  • Livrables :

    Évaluation :

    Vous serez évalué sur votre capacité à :

    Bonne chance !