博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ABP学习入门系列(二)(abp的数据迁移)
阅读量:5167 次
发布时间:2019-06-13

本文共 3256 字,大约阅读时间需要 10 分钟。

本文将介绍在ABP框架中将实体类迁移至数据库表

1.下图是abp的体系结构。 我们要是实现创建实体类并迁移数据到数据库的功能主要就是在下图中domain(领域层)做相应的一些操作。

2,看一下解决方案,如下图。 core就是我们要做相应修改的项目  从上至下依次 application (应用服务层),core(领域层),EntityFramework(基础设施层),web和webapi (Web和展现)

3,在core下创建Tasks文件夹,在文件夹下创建Task类。

using System;using System.ComponentModel.DataAnnotations;using System.ComponentModel.DataAnnotations.Schema;using Abp.Domain.Entities;using Abp.Domain.Entities.Auditing;using Abp.Timing;using LearningMpaAbp.Authorization.Users;namespace LearningMpaAbp.Tasks{    public class Task : Entity, IHasCreationTime    {        public const int MaxTitleLength = 256;        public const int MaxDescriptionLength = 64 * 1024;//64kb        public long? AssignedPersonId { get; set; }        [ForeignKey("AssignedPersonId")]        public User AssignedPerson { get; set; }        [Required]        [MaxLength(MaxTitleLength)]        public string Title { get; set; }        [Required]        [MaxLength(MaxDescriptionLength)]        public string Description { get; set; }        public TaskState State { get; set; }        public DateTime CreationTime { get; set; }        public Task()        {            CreationTime = Clock.Now;            State = TaskState.Open; ;        }        public Task(string title, string description = null) : this()        {            Title = title;            Description = description;        }         }    public enum TaskState : byte    {        Open = 0,        Completed = 1    }}

  

 4,接下来,到EntityFramework中的 XXXDbContext中添加

 注意添加引用

using LearningMpaAbp.Tasks;

//TODO: Define an IDbSet for your Entities...        public IDbSet
Tasks { get; set; }

  

 5,最后做数据迁移

打开程序包管理器控制台,默认项目选择Entityframework对应的项目后。执行Add-Migration Add_Task_Entity,创建迁移

创建成功之后会在Migrations下生成一个新的时间+Add_Task_Entity的类

在程序包管理器控制台,输入Update-Database,回车执行迁移。执行成功后,查看数据库,Tasks表创建成功

如果想要注入默认数据

在Migrations文件夹的SeedData文件夹中创建预置数据的类DefaultTestDataForTask

using System.Collections.Generic;using System.Linq;using LearningMpaAbp.EntityFramework;using LearningMpaAbp.Tasks;namespace LearningMpaAbp.Migrations.SeedData{    public class DefaultTestDataForTask    {        private readonly LearningMpaAbpDbContext _context;        private static readonly List
_tasks; public DefaultTestDataForTask(LearningMpaAbpDbContext context) { _context = context; } static DefaultTestDataForTask() { _tasks = new List
() { new Task("Learning ABP deom", "Learning how to use abp framework to build a MPA application."), new Task("Make Lunch", "Cook 2 dishs") }; } public void Create() { foreach (var task in _tasks) { if (_context.Tasks.FirstOrDefault(t => t.Title == task.Title) == null) { _context.Tasks.Add(task); } _context.SaveChanges(); } } }}

 然后在 Migrations下的Configuration类中添加

 new DefaultTestDataForTask(context).Create();

程序包管理器控制台,输入Update-Database,回车执行迁移。执行成功后,查看数据库,Tasks表创建成功,且表中已存在两条测试数据。

 

以上。。。

 

 

 

 

 

 

 

 

 

参考:http://www.jianshu.com/p/fde465ae599d

代码:https://github.com/tianxiangd/LearnAbp

转载于:https://www.cnblogs.com/tianjiaxiaobaicai/p/7826241.html

你可能感兴趣的文章
C. Tanya and Toys_模拟
查看>>
springboot jar包运行中获取资源文件
查看>>
基于FPGA实现的高速串行交换模块实现方法研究
查看>>
Java Scala获取所有注解的类信息
查看>>
delphi ,安装插件
查看>>
case when then的用法-leetcode交换工资
查看>>
11.28.cookie
查看>>
BeanShell简介
查看>>
python字符串操作
查看>>
不同程序语言的注释和变量要求
查看>>
语言基础(9):static, extern 和 inline
查看>>
ES5_03_Object扩展
查看>>
bzoj 2600: [Ioi2011]ricehub
查看>>
创建数据库,表
查看>>
工厂模式
查看>>
计算机网络基础知识
查看>>
C#里如何遍历枚举所有的项
查看>>
如何在键盘出现时滚动表格,以适应输入框的显示
查看>>
超级强大的鼠标手势工具
查看>>
常用Dockerfile举例
查看>>