.NET5控制檯程式使用EF連線MYSQL

1.使用nuget下載:

Microsoft.Extensions.Configuration.Json

Pomelo.EntityFrameworkCore.MySql

2.資料庫中建立好表:

  1. CREATE TABLE `user2` (
  2. `mid` int NOT NULL AUTO_INCREMENT,
  3. `uname` varchar(45) NOT NULL,
  4. `memo` varchar(200) DEFAULT NULL,
  5. PRIMARY KEY (`mid`)
  6. ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

3.新建實體類:

  1. using System.ComponentModel.DataAnnotations;
  2. using System.ComponentModel.DataAnnotations.Schema;
  3.  
  4. namespace ConsoleApp1
  5. {
  6. public class user2
  7. {
  8. [Key] //主鍵
  9. [DatabaseGenerated(DatabaseGeneratedOption.Identity)] //設定自增
  10. public int mid { get; set; }
  11. public string uname { get; set; }
  12.  
  13. public string memo { get; set; }
  14. }
  15. }

4.新建一個json配置檔案:appsettings.json,設定為始終複製。

  1. {
  2. "ConnectionStrings": {
  3. "Default": "Server=127.0.0.1;Database=wdb;charset=utf8;uid=root;pwd=some;"
  4. }
  5. }

5.新建DbContext

  1. using Microsoft.EntityFrameworkCore;
  2. using Microsoft.Extensions.Configuration;
  3. using System.IO;
  4.  
  5. namespace ConsoleApp1
  6. {
  7. public class DefaultDbContext : DbContext
  8. {
  9.  
  10. private IConfiguration configuration;
  11.  
  12. public DefaultDbContext()
  13. {
  14. configuration = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json").Build();
  15. }
  16.  
  17. public DbSet<user2> user2 { get; set; }
  18.  
  19. protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
  20. {
  21. string connStr = configuration.GetConnectionString("Default");
  22. optionsBuilder.UseMySql(connStr, ServerVersion.AutoDetect(connStr),null);
  23. }
  24. }
  25. }

6.使用

  1. using ConsoleApp1;
  2. using System;
  3. using System.Linq;
  4.  
  5. namespace Net5ConsoleMySql
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. try
  12. {
  13. DefaultDbContext context = new DefaultDbContext();
  14. Random rnd = new Random();
  15. string i = rnd.Next(1000, 9000).ToString();
  16. user2 zhangsan = new user2 { uname = "張三" + i, memo = i };
  17. user2 lisi = new user2 { uname = "李四" + i, memo = i };
  18. context.user2.AddRange(zhangsan, lisi);
  19. context.SaveChanges();
  20.  
  21. var users = context.user2.ToList();
  22. foreach (var user in users)
  23. {
  24. Console.WriteLine($"{user.mid} {user.uname} {user.memo}");
  25. }
  26. }
  27. catch (Exception ex)
  28. {
  29. Console.WriteLine($"EX: {ex.Message} ");
  30. if (ex.InnerException != null)
  31. {
  32. Console.WriteLine($"INNER EX: {ex.InnerException.Message} ");
  33. }
  34. }
  35. Console.WriteLine("Hello World!");
  36. }
  37. }
  38. }