• Create demo project with EntityFramework Core


    Create demo project with EntityFramework Core

    Quick link overview[快速访问连接地址]:

    Dependencies【依赖说明】

    在这里插入图片描述
    The project code refer office document, you can see : https://learn.microsoft.com/zh-cn/ef/【项目可以参考官方文档,参考地址】

    Code First【Code First】

    Product

    namespace EFCoreConsoleApp.Models
    {
        public class Product
        {
            
            public int Id { set; get; }
    
            public string Name { set; get; } = null!;
    
            [Column(TypeName="decimal(6,2)")]
            public decimal Price { get; set; }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    OrderDetail

    namespace EFCoreConsoleApp.Models
    {
        public class OrderDetail
        {
            public int Id { get; set; }
            public int Quantity { get; set; }
            public int ProductId { get; set; }
            public int OrderId { get; set; }
    
            public Order Order { get; set; } = null!;
            public Product Product { get; set; } = null!;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    Order

    namespace EFCoreConsoleApp.Models
    {
        public class Order
        {
            public int Id { get; set; }
            public DateTime OrderPlaced { get; set; }
            public DateTime? OrderFulfilled { get; set; }
            public int CustomerId { get; set; }
    
            public Customer Customer { get; set; } = null!;
            public ICollection OrderDetails { get; set; } = null!;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    Customer

    namespace EFCoreConsoleApp.Models
    {
        public class Customer
        {
            public int Id { get; set; }
            public string FirstName { get; set; } = null!;
            public string LastName { get; set; } = null!;
            public string? Address { get; set; }
            public string? Phone { get; set; }
            public string? Email { get; set; }
            public int? sex { get; set; }
    
            public ICollection Orders { get; set; } = null!;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    Create DbContext

    MyLocalContext

    namespace EFCoreConsoleApp.Data
    {
        public class MyLocalContext : DbContext
        {
    
            public DbSet Customers { get; set; } = null!;
            public DbSet Orders { get; set; } = null!;
            public DbSet Products { get; set; } = null!;
            public DbSet OrderDetails { get; set; } = null!;
    
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                // Get the connection string pattern from : https://learn.microsoft.com/en-us/ef/core/
                optionsBuilder.UseSqlServer("Server=localhost;Database=EFCore;User Id=sa;Password=xxxx123");
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    Migrations[迁移工具]

    Install the tool【安装方式】

    The EF Core tools help with design-time development tasks. They are primarily used to manage Migrations and to scaffold a DbContext and entity types by reverse enginerring the schema of a database.

    Install the Package manager Console tools by runing the following command in Package Manager Console.【执行安装命令】

    Install-Package Microsoft.EntityFrameworkCore.Tools
    
    • 1

    Update the tools by running the following command in Package Manager Console.

    Update-Package Microsoft.EntityFrameworkCore.Tools
    
    • 1

    Verify taht the tools are installed by running the following command:

    Get-help about_EntityFrameworkCore
    
    • 1

    OR

    dotnet ef can be installed as either a global ot local tools. I recommand you to install it as global tools, because most developers do like that.【Mac 命令行执行方式】

    Using the following command to install the tools:

    dotnet tool install --global dotnet-ef
    
    • 1

    Using the following command to update the tools:

    dotnet tool update --global dotnet-ef
    
    • 1

    Before you can use the tools on a special project, you will need to add the Microsoft.EntityFrameCore.Design package to it:

    dotnet add package Microsoft.EntityFrameworkCore.Design
    
    • 1

    Verify installation:【验证安装效果】
    在这里插入图片描述

    Add migration【执行迁移工具】

    After finished the prepartion, you can generate table by running the following command in order:

    dotnet ef migrations add InitialCreate
    dotnet ef database update
    
    • 1
    • 2

    You can also refer Migration Commands to implement the same result by running command in your VS IDE.

    Add-Migration InitialCreate
    Update-Database
    
    • 1
    • 2

    Verify the local database tables:【得到创建的表结果】
    在这里插入图片描述

    Test operations【测试代码】

    Here are some demo code to insert or update some data to your database, you can try that and help you release how to do CRUD with EFCore:

    
    using MyLocalContext context = new MyLocalContext();
    
    # region Add Products
    
    // Create a new product
    Product veggiSpecial = new Product()
    {
        Name = "Veggie Special Pizza",
        Price = 9.9M
    };
    // Save product
    context.Products.Add(veggiSpecial);
    
    Product deluxeMeat = new Product()
    {
        Name = "Deluxe Meat Pizza",
        Price = 12.99M
    };
    context.Products.Add(deluxeMeat);
    
    context.SaveChanges();
    
    #endregion
    
    #region display products
    var products = context.Products
        .Where(p => p.Price > 10.0M)
        .OrderBy(p => p.Price);
    
    Console.WriteLine("Use function method way:");
    foreach (Product p in products)
    {
        Console.WriteLine($"Id:    {p.Id}");
        Console.WriteLine($"Name:  {p.Name}");
        Console.WriteLine($"Price: {p.Price}");
        Console.WriteLine(new string('-', 20));
    }
    #endregion
    
    #region linqProduct
    
    var productsLinq = from product in context.Products
                   where product.Price >= 10.0M
                   orderby product.Price descending
                   select product;
    
    Console.WriteLine("Use Linq way:");
    foreach (Product p in productsLinq)
    {
        Console.WriteLine($"Id:    {p.Id}");
        Console.WriteLine($"Name:  {p.Name}");
        Console.WriteLine($"Price: {p.Price}");
        Console.WriteLine(new string('-', 20));
    }
    #endregion
    
    #region update product
    var veggiSpecialUpdate = context.Products
        .Where(p => p.Name == "Veggie Special Pizza")
        .FirstOrDefault();
    
    if (veggiSpecialUpdate is Product)
    {
        veggiSpecialUpdate.Price = 11.11M;
    }
    
    context.SaveChanges();
    #endregion
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    Result as sinpshot:【展示效果】
    在这里插入图片描述


    You can get the first EFCore project by follow the blob step by step. We can have a discussion in private If you meet any problems when create your demo code.
    Hope it is helpul for you !【希望有所帮助】

  • 相关阅读:
    Windows10 安装 Ubuntu(WSL2)
    oracle OCP OCM MySQL OCP认证难吗?
    java项目开发jsp编程软件会议管理系统myeclipse开发Mysql数据库计算机网页
    第5章 uin-app本地主机数据跨域(Cors)数据交互实现
    提升Mac运行速度的十大小技巧,你用过几个?
    数据库课后作业
    直播回顾|论道原生:云原生存储
    【代码仓库提交大文件,用Git LFS!】
    springboot+华迪企业合同管理平台 毕业设计-附源码191555
    【软考 系统架构设计师】嵌入式系统④ 嵌入式操作系统
  • 原文地址:https://blog.csdn.net/qq_32112175/article/details/127717537