前言
EF Core 主力是做web端,webMVC、web API。也支持应用程序,不过在未来的企业更新升级换代比较快,每次更新的话桌面程序还需要重新部署,也是比较费劲。
推荐
给大家推荐一个.net的学习视频,讲的挺好的,前提是有一定的C#语法基础
.net core 6.0视频
本机环境
IDE:vs 2022
数据库:vs自带SQL Server数据库
.net 版本:.net 6.0
步骤
-
创建winfrom项目
注意不是.net Framework
-
创建之后 拖拽绘制一个登录页面吧
-
安装EF Core的包
Microsoft.EntityFrameworkCore.SqlServer:6.0.7
Microsoft.EntityFrameworkCore.Tools:6.0.7
如果想要连接其他数据库可以参照官网:支持的其他数据库连接
-
安装完成后
-
创建模型
using System.Text;
using System.Threading.Tasks;
namespace 多用户管理系统.Model
{
internal class User
{
#? 表示值可为空,如果不标记的话,会警告,除非在构造函数中赋值
public int Id { get; set; }
public string? UserName { get; set; }
public string? PassWord { get; set; }
/*
public User(int id, string userName, string passWord)
{
Id = id;
UserName = userName;
PassWord = passWord;
}
*/
}
}
- 创建UserConfigure 用于设置数据库字段的配置
使用的是fluent API,单独配置每一个实体的类型
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 多用户管理系统.Model
{
internal class UserConfigure : IEntityTypeConfiguration<User>
{
public void Configure(EntityTypeBuilder<User> builder)
{
builder.ToTable("T_User"); //设置表名
builder.HasKey(x => x.Id);//设置为主键
builder.Property(a => a.Id).IsRequired().IsUnicode();//设置不为空,且编码格式为Unicod
builder.Property(a => a.UserName).IsUnicode().HasMaxLength(30);//设置编码格式与最大长度为30
builder.Property(a => a.PassWord).IsUnicode().HasMaxLength(30);//意义同上
}
}
}
- 创建TestDbContext.cs 类,用于连接数据库相关
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using 多用户管理系统.Model;
namespace 多用户管理系统
{
internal class TestDbContext: DbContext
{
public DbSet<User> Users { get; set; }//用户绑定实体类
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
string connStr = "Server=Chinese_PRC_CI_AS.;Database=demo1;Trusted_Connection=True";//数据库连接字符串
optionsBuilder.UseSqlServer(connStr);//连接数据库
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);
}
}
}
- 使用迁移命令
Add-Migration User
解释:Add-Migration + 名称[迁移要起的名字],会生成迁移文件
Update-Database
[在数据库生成数据表]
这样就可以访问数据库了
- login登录判断
对数据库有两种方式设置初始数据,1.直接连接数据库,存放数据。2.设置种子数据,3.直接在数据库初始化
数据库中的值
登录button按钮事件
private void button2_Click(object sender, EventArgs e)
{
//
if (textBox1.Text == "" || textBox1.Text == "")
{
MessageBox.Show("用户名或账号不能为空");
}
else
{
using (TestDbContext ctx = new TestDbContext())
{
var user = ctx.Users.FirstOrDefault(u => u.UserName == textBox1.Text && u.PassWord == textBox2.Text);//按照条件查找数据,找到就返回第一条数据,没有找到就返回为空
if (user != null)
{
MessageBox.Show("登录成功");
}
else
{
MessageBox.Show("用户名密码不正确");
}
}
}
}
- 效果展示