runliuv

runliuv@cnblogs

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  705 随笔 :: 0 文章 :: 125 评论 :: 97万 阅读
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

.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   runliuv  阅读(96)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2015-09-07 EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配
2013-09-07 用SqlConnectionStringBuilder修改连接超时时间
点击右上角即可分享
微信分享提示