.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;
分类:
C# .net core
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2015-09-07 EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配
2013-09-07 用SqlConnectionStringBuilder修改连接超时时间