通过创建的实体类和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. Ubuntu 安装Android Studio与使用手册

    用的是Ubuntu 12.04 1.先去下载,国内可以去这里下载 https://github.com/inferjay/AndroidDevTools 2.下载后解压进入android-studio ...

  2. 【转】Android设计中的.9.png

    来源:http://isux.tencent.com/android-ui-9-png.html Android设计中的.9.png 注意:当使用9.png做TextView背景时,一定要设置内容区域 ...

  3. Lua从入门到精通

    1. 入门指南 http://www.cnblogs.com/linbc/archive/2009/06/02/1494622.html

  4. Poj2948Martian Mining(记忆化)

    链接 这题意好难懂 看得迷迷糊糊 想的也迷迷糊糊  后来睡了会突然想到了..不就是类似以前的矩阵操作 从右下角记忆化   大的由小的推来 dp[i][j] = max(dp[i-1][j]+s1,dp ...

  5. POJ2892Tunnel Warfare (线段树)

    http://poj.org/problem?id=2892 记录每个区间端点的左连续及右连续 都是单点更新 用不着向下更新 还简单点 找错找了N久 最后发现将s[w<<1|1]写成s[w ...

  6. poj 2996 Help Me with the Game(模拟)

    题目:http://poj.org/problem?id=2996 题意:给出 棋盘 情况 输出 白棋 和 黑棋在 棋盘上的 白棋为大写字母 黑棋为小写字母 棋盘 左下点为原点(1,a) 输出 是 按 ...

  7. java中正则表达式

    在<java编程思想>中,java中的 \\ 表示“我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义.”如果想插入一个普通的反斜线,那么应该使用 \\\\. 理解: 我们使用的 ...

  8. HDU 5688 Problem D

    Problem D Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  9. Web API-如何将Controller的返回值转换成HTTP response消息

    https://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization https://co ...

  10. 编译驱动时出现"Cannot open file trace.h"错误

    编译驱动时出现"Cannot open file trace.h"错误 如题,用VS2013编译驱动是出现上述错误,原来是开启了WPP追踪导致的: 解决方案: 右键项目名-属性-W ...