原文:https://blog.csdn.net/weixin_40719943/article/details/106932808
视频:https://www.bilibili.com/video/BV1xa4y1v7rR
一、新建solution, 添加类库 model层
1 用vs2019,新建一个空的Solution命名为Demo,在该solution新建一个类库(.net standard),命名为Demo.Domain,用来存储一些model
2 创建model
public class League //联赛
{
public int Id { get; set; }
public string Name { get; set; }
public string Country { get; set; }
}
public class Club //足球队
{
public Club()
{
Players = new List<Player>();
}
public int Id { get; set; }
public string Name { get; set; }
public string City { get; set; }
public DateTime DateOfEstablishment { get; set; }
public string History { get; set; }
public League League { get; set; }//导航属性
public List<Player> Players { get; set; }//导航属性
}
public class Player //队员
{
public int Id { get; set; }
public string Name { get; set; }
public DateTime DateOfBirth { get; set; }
}
二、创建数据库访问层
1 在当前solution新建.netstand 类库,命名为Demo.data,添加Domain层的引用
2 nuget下载 Mysql.data.entityframeworkCore,会自动将相关的依赖包全装上
3 新建类ContextDemo 这个类用来连接数据库,以及将model映射到数据库中表结构
这里面需要根据自己的机器配置好连接字符串。
public class ContextDemo:DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseMySQL("server=localhost;port=3306;user=root;password=111111;database=efcoreDemo");
}
public DbSet<League> Leagues { get; set; }
public DbSet<Club> Clubs { get; set; }
public DbSet<Player> Players { get; set; }
}
三、自动生成数据库
1 当前solution添加console的工程,并设置为启动项,添加另外两个工程Deme.Domain,Demo.data引用
2 搜索打开Package Manager Console,打开
3 Package Manager Console 中Default project 选择数据库访问层
4 使用migration命令之前,需在nuget安装 Microsoft.EntityFrameworkCore.Tools
5 在console中键入add-migration init ,生成迁移文件
首次运行add-migration会生成两个文件:
一个是迁移文件,每次add-migraiton都会生成迁移文件, 迁移文件中包含所有Model的修改或者新增或者删除的详细信息,包含更新前和更新后的对比信息
另一个是快照文件,快照用来追踪所有的model状态,只在首次添加migration时生成,后续对Model的修改只会更新这个文件
5 update-database;//生成数据库文件
此时在mysql中会生成对应的三张表
其他命令:
script-migration 生成sql脚本,主要引用于生产环境
upate-database -verbose 可以查看执行过程中明细