.net core出来已经有很长一段时间了,而EentityFrameworkCore(后面简称EFCore)是.net framework的EntityFramework在.net core中的实现,至于EntityFramework是什么,这里就不介绍了。
本文主要介绍EFCore的CodeFirst方式下的数据迁移。
一、创建项目
首先创建项目结构如下:
说明:
EFCoreDemo.EntityFrameworkCore:这个是一个标准类库,主要一些EFCore的一些ORM实体与配置。
EFCoreDemo.ConsoleApp:这个是一个控制台项目,主要用于使用EFCore的使用,因为一般都是使用WebApi或者MVC,然后后使用三层架构,或者一些其他的架构诸如ABP等,使用仓储等模式使用EFCore,但这里为了简单,直接使用一个控制台程序模拟。
EFCoreDemo.EntityFrameworkCore.Host:这个也是一个控制台程序,主要用于EFCore的数据迁移。
于是乎,我们的项目引用关系是:
EFCoreDemo.ConsoleApp 引用 EFCoreDemo.EntityFrameworkCore
EFCoreDemo.EntityFrameworkCore.Host 引用 EFCoreDemo.EntityFrameworkCore
二、创建实体及上下文
对EFCoreDemo.EntityFrameworkCore项目使用nuget安装EFCore所需的包:
# 如果使用MySql,安装
Microsoft.EntityFrameworkCore Pomelo.EntityFrameworkCore.MySql
# 如果使用SqlServer,安装
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.SqlServer
这里使用的是MySql
现在假设我们要创建3张表,用户表(Account),活动表(Activity),活动记录表(ActivityRecord)
于是我们分别创建3个实体与它对应
/// <summary> /// 用户表 /// </summary> public class Account : BaseEntity { /// <summary> /// 姓名 /// </summary> public string Name { get; set; } /// <summary> /// 手机号码 /// </summary> public string Phone { get; set; } /// <summary> /// 年龄 /// </summary> public int Age { get; set; } /// <summary> /// 创建时间 /// </summary> public DateTime CreationTime { get; set; } }