通过创建的实体类和DbContext类利用EF的Code First数据库迁移创建数据库。

下面看代码。

一、先创建实体类

我先添加一个BaseEntity,里面就一个属性

[Key]
public virtual Guid Id { set; get; }

然后User表和Role表

public class Users : BaseEntity
{
public string Name { get; set; }
public Guid RoleId { get; set; }
public virtual Roles Role { get; set; }
}
public class Roles:BaseEntity
{
public string Name { get; set; }
}

二、创建DatabaseContext

public class DatabaseContext : DbContext
{
public DatabaseContext() : base("name=conn")
{ } public virtual DbSet<Users> Users { get; set; }
public virtual DbSet<Roles> Roles { get; set; }
}

这里DbSet添加我要操作的实体。

三、创建Configuration

public class Configuration : DbMigrationsConfiguration<DatabaseContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
ContextKey = "AbpDemo";
} protected override void Seed(DatabaseContext context)
{
//base.Seed(context);
new DefaultRoleAndUserBuilder(context).Build();//后面添加默认数据用的
}
}

添加默认数据用的。比如添加管理员

四、添加默认数据生成类

public class DefaultRoleAndUserBuilder
{
private readonly DatabaseContext _context;
public DefaultRoleAndUserBuilder(DatabaseContext context)
{
_context = context;
} public void Build()
{
CreateUserAndRoles();
} private void CreateUserAndRoles()
{
var adminRole = _context.Roles.FirstOrDefault(x => x.Name == "admin");
if (adminRole == null)
{
adminRole = _context.Roles.Add(new Models.Roles { Id = Guid.NewGuid(), Name = "admin" });
_context.SaveChanges();
} var adminUser = _context.Users.FirstOrDefault(x => x.Name == "admin");
if (adminUser == null)
{
adminUser = _context.Users.Add(new Models.Users { Id = Guid.NewGuid(), Name = "admin", RoleId = adminRole.Id }); _context.SaveChanges();
}
}
}

五、生成数据库

打开程序包管理器控制台,执行命令

add-migration "InitialData"

这是生成的cs文件的后缀名,执行完后会发现Migrations文件夹多了一个文件,但是数据库没有生成,看下图。

继续执行命令

update-database

这样数据库也有了。

基于EF创建数据库迁移的更多相关文章

  1. asp.net core 系列 20 EF基于数据模型创建数据库

    一.概述 本章使用 Entity Framework Core 构建执行基本数据访问的 ASP.NET Core MVC 应用程序.使用迁移(migrations)基于数据模型创建数据库,是一种cod ...

  2. 20.2.翻译系列:EF 6中基于代码的数据库迁移技术【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/code-based-migration-in-code-first.aspx EF 6 ...

  3. (17)ASP.NET Core EF基于数据模型创建数据库

    1.简介 使用Entity Framework Core构建执行基本数据访问的ASP.NET Core MVC应用程序.使用迁移(Migrations)基于数据模型创建数据库,你可以在Windows上 ...

  4. EF 创建数据库的策略 codefist加快效率!【not oringin!】

    今天去搜寻,ef创建数据库的策略有四种,区分还是和数据库里sql的创建的语句这些英文差不多一致. 一:数据库不存在时重新创建数据库 Database.SetInitializer<testCon ...

  5. 基于ormlite创建数据库存储数据案例

    一直不知道安卓创建数据库存储数据,以前遇到过,但是没有深入研究,今天仔细的看了一下,学习到了一点知识 直接看代码了 public class DatabaseHelper extends OrmLit ...

  6. .net core2.1 - ef core数据库迁移,初始化种子数据

    起因:早上偶然看见一篇文章说是ef core(2.x)使用种子数据,主表子表迁移时候,正常情况下说是无法迁移成功,索性就试试,结果是和ef6的一样,没感觉有什么大的区别.一切OK,见下面内容. 1.首 ...

  7. EF Core 数据库迁移(Migration)

    工具与环境介绍 1.开发环境为vs 2015 2.mysql EF Core支持采用  Pomelo.EntityFrameworkCore.MySql   源代码地址(https://github. ...

  8. django(django项目创建,数据库迁移)

    Django项目的创建与介绍 安装:pip3 install django==1.11 查看版本号:django-admin --version 新建项目: 1.切到目标目录 2.django-adm ...

  9. MVC学习笔记(二)—用EF创建数据库

    1.创建一个空项目 2.在项目中创建EFCore的类库 3.在NuGut控制台为EFCore项目中安装entity  3.1 命令为:Install-Package EntityFramework(在 ...

随机推荐

  1. [译]再次对比TCP与UDP

    免责声明:和往常一样,此文章的观点都属于‘No Bugs’Hare(译注:一个网站) ,也许不一定和翻译者或者Overload编辑的意见一致.同时,翻译者从Lapine翻译到英语也具有一定的难度.除此 ...

  2. caffe简易上手指南(三)—— 使用模型进行fine tune

    之前的教程我们说了如何使用caffe训练自己的模型,下面我们来说一下如何fine tune. 所谓fine tune就是用别人训练好的模型,加上我们自己的数据,来训练新的模型.fine tune相当于 ...

  3. UVa 673 (括号配对) Parentheses Balance

    本来是当做水题来做的,后来发现这道题略坑. 首先输入的字符串可能是空串,所以我用了gets函数,紧接着就被scanf("%d", &n)后面的换行符坑掉了. 于是乎再加一句 ...

  4. OpenSSH 'child_set_env()'函数安全绕过漏洞

    漏洞版本: OpenSSH 6.x 漏洞描述: Bugtraq ID:66355 CVE ID:CVE-2014-2532 OpenSSH是一种开放源码的SSH协议的实现. OpenSSH " ...

  5. angularjs的事件 $broadcast and $emit and $on

    angularjs的事件 $broadcast and $emit and $on <!DOCTYPE html> <html> <head> <meta c ...

  6. 【转】java枚举类型enum的使用

    原文网址:http://blog.csdn.net/wgw335363240/article/details/6359614 java 枚举类型enum 的使用 最近跟同事讨论问题的时候,突然同事提到 ...

  7. 数组中所有重复次数大于等于minTimes的数字

    class Program { static void Main(string[] args) { int[] input = { 1, 1, 1, 2, 2, 5, 2, 4, 9, 9, 20 } ...

  8. 陈灯WGF双缓冲绘图框架

    “木丸子童屋”,专售各类儿童玩具,价格优惠,请大家多多支持:http://shop65552598.taobao.com/ WGF(windows graphic foundation)为window ...

  9. Max Sub-matrix

    Max Sub-matrix 教练找的题目,目前样列过了 题意:找子矩阵的最大周长 思路:先离散每列,再枚举列(n*n),在当前枚举的两列之间求每行的和(n*n*n),但是开两个数组,一个包含两列上的 ...

  10. Navicat通过云主机内网连接阿里云RDS

    背景 公司为了安全起见,RDS设置只允许阿里云主机的内网端可以访问.这就意味,如果要操作RDS就需要连接到云主机上之后通过mysql shell操作.操作起来很复杂麻烦,今天看同事用Navicat f ...