runliuv

runliuv@cnblogs

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

.NET CORE .NET6 控制台程序使用EF连接MYSQL8

mysql版本:8.4.2。

数据库中的表:

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

1.使用nuget下载:

Microsoft.Extensions.Configuration.Json,版本:8.0.0

Pomelo.EntityFrameworkCore.MySql,版本:6.0.0

2.新建实体类:

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace ConsoleNet6Mysql
{
    public class user2
    {
        [Key] //主键 
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]  //设置自增
        public int mid { get; set; }
        public string uname { get; set; }

        public string memo { get; set; }
    }
}

3.新建一个json配置文件:appsettings.json,设置为始终复制(或‘如果较新则复制’)。

{
  "exclude": [
    "**/bin",
    "**/bower_components",
    "**/jspm_packages",
    "**/node_modules",
    "**/obj",
    "**/platforms"
  ],
  "ConnectionStrings": {
    "Default": "Server=128.0.14.41;Database=testdb1;charset=utf8;uid=jojo;pwd=Gameking2008#;"
  }
}

其中:ConnectionStrings,是新加内容。

记得在 visual studio 中把appsettings.json,设置为始终复制(或‘如果较新则复制’)。

4.新建DbContext:

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;

namespace ConsoleNet6Mysql
{
    public class DefaultDbContext : DbContext
    {

        private IConfiguration configuration;

        public DefaultDbContext()
        {
            configuration = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json").Build();
        }

        public DbSet<user2> user2 { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            string connStr = configuration.GetConnectionString("Default");
            optionsBuilder.UseMySql(connStr, ServerVersion.AutoDetect(connStr), null);
        }
    }
}

6.使用:

namespace ConsoleNet6Mysql
{
    internal class Program
    {
        static void Main(string[] args)
        {
            try
            {
                //插入
                DefaultDbContext context = new DefaultDbContext();
                Random rnd = new Random();
                string i = rnd.Next(1000, 9000).ToString();
                user2 zhangsan = new user2 { uname = "张三" + i, memo = i };
                user2 lisi = new user2 { uname = "李四" + i, memo = i };
                context.user2.AddRange(zhangsan, lisi);
                context.SaveChanges();

                //查询
                var users = context.user2.ToList();
                foreach (var user in users)
                {
                    Console.WriteLine($"{user.mid} {user.uname} {user.memo}");
                }

                context.Dispose();
            }
            catch (Exception ex)
            {
                Console.WriteLine($"EX: {ex.Message}  ");
                if (ex.InnerException != null)
                {
                    Console.WriteLine($"INNER EX: {ex.InnerException.Message}  ");
                }
            }

            Console.WriteLine("Hello, World!");
        }
    }
}

如果遇到:SSL Authentication Error 报错,连接字符串里加:

AllowPublicKeyRetrieval=True;

posted on 2024-09-07 16:12  runliuv  阅读(12)  评论(0编辑  收藏  举报