一、Pomelo.EntityFrameworkCore.MySql简介
Git源代码地址:https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql
注:这是第三方的 EF Core 的ORM框架,支持Synac I/O访问操作MySql数据,不是MySql官方的数据驱动。
1.本框架支持Code First 和Server First
问题:Server First 生成代码没有附带主外键关联。
二、Server First方式使用示例
1.创建.Net Core 控制台项目
2.安装Pomelo.EntityFrameworkCore.MySql
使用命令:
Install-Package Pomelo.EntityFrameworkCore.MySql
或者在包管理工具中搜索安装
创建数据库角色-菜单命令:
-- 创建角色&菜单简单逻辑表 create database RoleMenu; grant all on *.* to 'userone'@'localhost' identified by '123'; 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命令,链接数据库生成model层和上下文:
Scaffold-DbContext "Server=127.0.0.1;port=3306;Database=Md5Data;uid=md5dba;pwd=md5secretkey;Character Set=utf8;" MySql.Data.EntityFrameworkCore -OutputDir models2
生成代码结果:
public partial class Role { public int RoleId { get; set; } public string Name { get; set; } public int SortValue { get; set; } } public partial class Menu { public int MenuId { get; set; } public string Name { get; set; } public string Title { get; set; } public string LinkUrl { get; set; } public string Icon { get; set; } } public partial class RoleMenu { public int Id { get; set; } public int RoleId { get; set; } public int MenuId { get; set; } } public partial class RoleMenuContext : DbContext { public virtual DbSet
更多:
.NetCore中EFCore for MySql整理(二)
.NetCore中EFCore for MySql整理
.NetCore中EFCore的使用整理