EF Core

Posted by 戚骏 on April 10, 2021

visual studio 2019 新建 .Net Core 3.1 Console工程

添加程序包:

Microsoft.EntityFrameworkCore.Tools version:3.1.14
Microsoft.EntityFrameworkCore.Design version:3.1.14
Pomelo.EntityFrameworkCore.MySql version:3.2.4

新建数据库:

-- 创建角色&菜单简单逻辑表
create database RoleMenu;
grant all on *.* to 'root'@'localhost' identified by 'root';

use RoleMenu;
-- drop table Role_Menu,Role,Menu;
-- 创建角色表
create table Role(
RoleID int not null  auto_increment,
Name nvarchar(50) not null,
SortValue int not null,
primary key(RoleID)
);

-- 创建菜单表 
create table Menu(
MenuID int not null auto_increment,
Name nvarchar(50) not null,
Title nvarchar(100) not null,
LinkUrl varchar(200) null,
Icon varchar(100) null,
primary key(MenuID)
);

-- 创建角色-菜单表 
create table Role_Menu(
ID int not null auto_increment,
RoleID int not null,
MenuID int not null,
primary key(ID),
foreign key(RoleID) references Role(RoleID)
on delete cascade,
foreign key(MenuID) references Menu(MenuID)
on delete no action
);

-- 添加测试数据 
insert Role(Name,SortValue) values('系统管理员',1);
insert Role(Name,SortValue) values('服务中心',2);

-- 添加菜单数据 
insert Menu(Name,Title) values('个人信息','个人信息管理');
insert Menu(Name,Title) values('修改密码','修改登录密码&二级密码');

-- 添加关联 
insert Role_Menu(RoleID,MenuID) values(1,1);
insert Role_Menu(RoleID,MenuID) values(1,2);
insert Role_Menu(RoleID,MenuID) values(2,1);
insert Role_Menu(RoleID,MenuID) values(2,2);

PM终端中输入指令:

Scaffold-DbContext "Server=127.0.0.1;port=3306;Database=RoleMenu;uid=root;pwd=root;Character Set=utf8;" Pomelo.EntityFrameworkCore.MySql -OutputDir Models

在Models目录中生成了映射类:

Menu Role RoleMenu RoleMenuContext

增删查改

using System;
using EF.Models;

namespace EF
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var db = new RoleMenuContext())
            {
                // Create
                var role = new Role();
                role.Name = "游客";
                role.SortValue = 3;
                db.Add(role);
                db.SaveChanges();

                // Read
                foreach (var r in db.Role)
                {
                    Console.WriteLine(r.Name);
                }

                // Update
                role.Name = "临时游客";
                db.SaveChanges();

                // Delete
                db.Remove(role);
                db.SaveChanges();
            }
        }
    }
}