(转载)EF 使用code first模式创建数据库和 填充种子数据
第一篇:来自 .net 开发菜鸟 博主的文章:https://www.cnblogs.com/dotnet261010/p/8035213.html
第二篇:来自 JustYong 博主的文章:https://www.cnblogs.com/JustYong/p/5970683.html
感谢两位博主贡献精彩文章,感谢分享。
自己公司使用的开发框架,每次使用都要手动的把一些公共的数据添加进去,感觉很麻烦,所以就查了一下 “ 如何填充种子数据” ,看了以上的文章,很受益。
在Migrations文件夹下的 数据迁移配置文件 Configuration.cs 下的 Seed()函数中添加种子数据,代码如下,亲测针对本公司框架使用无误:
namespace ORM.Migrations
{
using Modules;
using System;
using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq; public sealed class Configuration : DbMigrationsConfiguration<ORM.MyDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
ContextKey = "ORM.MyDbContext";
} protected override void Seed(ORM.MyDbContext context)
{
// This method will be called after migrating to the latest version. // You can use the DbSet<T>.AddOrUpdate() helper extension method
// to avoid creating duplicate seed data.
var pId = Guid.NewGuid();
int orderNumber = ;
var sysMenuSet = new Menu()
{
Id = pId,
ParentId = null,
Name = "系统设置",
Url = null,
IconClass = null,
OrderNumber = orderNumber
};
var menuSet = new Menu()
{
Id = Guid.NewGuid(),
ParentId = pId,
Name = "菜单设置",
Url = "Menu/Index",
IconClass = null,
OrderNumber = orderNumber
};
var dicitemSet = new Menu()
{
Id = Guid.NewGuid(),
ParentId = pId,
Name = "字典设置",
Url = "Dic/Index",
IconClass = null,
OrderNumber = orderNumber
};
var userSet = new Menu()
{
Id = Guid.NewGuid(),
ParentId = pId,
Name = "账户设置",
Url = "User/Index",
IconClass = null,
OrderNumber = orderNumber
};
var empolyeeSet = new Menu()
{
Id = Guid.NewGuid(),
ParentId = pId,
Name = "用户管理",
Url = "Employee/Index",
IconClass = null,
OrderNumber = orderNumber
};
var roleSet = new Menu()
{
Id = Guid.NewGuid(),
ParentId = pId,
Name = "角色管理",
Url = "Role/Index",
IconClass = null,
OrderNumber = orderNumber
};
var departmentSet = new Menu()
{
Id = Guid.NewGuid(),
ParentId = pId,
Name = "部门管理",
Url = "Department/Index",
IconClass = null,
OrderNumber = orderNumber
};
var tagSet = new Menu()
{
Id = Guid.NewGuid(),
ParentId = pId,
Name = "标签管理",
Url = "Tag/Index",
IconClass = null,
OrderNumber = orderNumber
};
var funcSet = new Menu()
{
Id = Guid.NewGuid(),
ParentId = pId,
Name = "权限管理",
Url = "Func/Index",
IconClass = null,
OrderNumber = orderNumber
};
context.Menus.Add(sysMenuSet);
context.Menus.Add(menuSet);
context.Menus.Add(dicitemSet);
context.Menus.Add(roleSet);
context.Menus.Add(userSet);
context.Menus.Add(empolyeeSet);
context.Menus.Add(departmentSet);
context.Menus.Add(tagSet);
context.Menus.Add(funcSet);
base.Seed(context);
}
}
}
(转载)EF 使用code first模式创建数据库和 填充种子数据的更多相关文章
- EntityFramework使用Code First模式创建数据库控制生成单数形式的表名
使用Code-First模式生成数据库时,默认生成的数据库表的名称为类型的复数形式,例如实体类名称是"User",默认生成的数据库表名为“Users”,多数情况下我们并不想生成的数 ...
- 使用EF的Code First模式创建模型
Entity Framework Core Entity Framework (EF) Core 是轻量化.可扩展.开源和跨平台版的常用 Entity Framework 数据访问技术. EF Cor ...
- 使用MVC5+Entity Framework6的Code First模式创建数据库并实现增删改查功能
此处采用VS2017+SqlServer数据库 一.创建项目并引用dll: 1.创建一个MVC项目 2.采用Nuget安装EF6.1.3 二.创建Model 在models文件夹中,建立相应的mode ...
- 8天掌握EF的Code First开发系列之3 管理数据库创建,填充种子数据以及LINQ操作详解
本文出自8天掌握EF的Code First开发系列,经过自己的实践整理出来. 本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LI ...
- Code First开发系列之管理数据库创建,填充种子数据以及LINQ操作详解
返回<8天掌握EF的Code First开发>总目录 本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LINQ to ...
- Entity Framework应用:使用Code First模式管理数据库创建和填充种子数据
一.管理数据库连接 1.使用配置文件管理连接之约定 在数据库上下文类中,如果我们只继承了无参数的DbContext,并且在配置文件中创建了和数据库上下文类同名的连接字符串,那么EF会使用该连接字符串自 ...
- EF core (code first) 通过自动迁移实现多租户数据分离 :按Schema分离数据
前言 本文是多租户系列文章的附加操作文章,如果想查看系列中的其他文章请查看下列文章 主线文章 Asp.net core下利用EF core实现从数据实现多租户(1) Asp.net core下利用EF ...
- Entity Framework应用:使用EF的DataBase First模式实现数据库的增删改查
在上一篇文章中讲解了如何生成EF的DBFirst模式,接下来讲解如何使用DBFirst模式实现数据库数据的增删改查 一.新增数据 新增一个Student,代码如下: static void Add() ...
- 使用Entity Framework通过code first方式创建数据库和数据表
开发环境 WIN10 Entity Framework6.0 MVC5.0 开发工具 VS2015 SqlServer2012 1.创建上下文Context继承DbContext,并创建其他的业 ...
随机推荐
- sql的over函数的使用
over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用.其参数:over(partition by columnname1 order by c ...
- JVM垃圾回收机制GC
1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象:而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾.JVM的 ...
- java中unmodifiableList方法的应用场景
java对象中primitive类型变量可以通过不提供set方法保证不被修改,但对象的List成员在提供get方法后,就可以随意add.remove改变其结构,这不是希望的结果.网上看了下,发现Col ...
- JavaScript各变量类型的判断方法
我们很容易被漂亮的代码吸引,也不知不觉的在自己的代码库中加入这些.却没有冷静的想过它们的优劣.这不,我就收集了一系列形如 "是否为……?" 的判断的boolean函数. isNul ...
- [LeetCode169]Majority Element
Majority Element Total Accepted: 58500 Total Submissions: 163658My Submissions Question Solution Gi ...
- mysql插入表情问题
http://blog.csdn.net/wxc20062006/article/details/19547179http://blog.csdn.net/xb12369/article/detail ...
- hadoop学习之HDFS
1.什么是大数据?什么是云计算?什么是hadoop? 大数据现在很火,到底什么是大数据,多大的数据才算大,一般而言对于TB级以上的数据我们成为大数据,对于这些数据它的价值在哪?大数据的价值就是我们大量 ...
- 【程序打包工具 Inno Setup】CreateProcess 失败:代码 740(Inno Setup打包的程序提升为管理员权限)
原文参考 https://www.cnblogs.com/SnailProgramer/p/4243666.html http://blog.csdn.net/x356982611/article/d ...
- unicode ascii 互转 函数 C实现 MultiByteToWideChar/WideCharToMultiByte 详解
void Ascii2UnicodeLen(char*src,int len,unsigned short*tar) { unsigned int word_cnt; word_cnt=MultiBy ...
- 阿里的iptables,保存一份
# Generated by iptables-save v1.4.7 on Fri Apr 14 16:37:31 2017 *filter :INPUT ACCEPT [0:0] :FORWARD ...