ABP学习入门系列(二)

本文将介绍在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<Task> 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<Task> _tasks;

        public DefaultTestDataForTask(LearningMpaAbpDbContext context)
        {
            _context = context;
        }

        static DefaultTestDataForTask()
        {
            _tasks = new List<Task>()
          {
              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

时间: 2024-10-07 08:50:54

ABP学习入门系列(二)的相关文章

ABP学习入门系列(一)

ABP是"ASP.NET Boilerplate Project (ASP.NET样板项目)"的简称.ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它旨在成为一个通用的WEB应用程序框架和项目模板.框架ABP是基于最新的ASP.NET CORE,ASP.NET MVC和Web API技术的应用程序框架.并使用流行的框架和库,它提供了便于使用的授权,依赖注入,验证,异常处理,本地化,日志记录,缓存等常用功能.架构ABP实现了多层架构(领域

ABP学习入门系列(五)(展示实现增删改查)

大致要实现的 效果如下 1,添加Controller(用到的X.PagedList 注意到nuget添加) using System.Web.Mvc; using Abp.Application.Services.Dto; using Abp.Runtime.Caching; using Abp.Threading; using Abp.Web.Mvc.Authorization; using AutoMapper; using LearningMpaAbp.Notifications; usi

oracle学习入门系列之二 数据库基础知识

oracle学习入门系列之二 数据库基础知识 本篇蛤蟆要梳理下那些被淡忘的数据库基础知识,也许根本就没被人记住过.不管是哪种情况,该记住的必须记住,记不住就把他记下来吧. 首先问几个问题如下: 数据库基础知识是什么? 好吧,蛤蟆直接吐后而不亡,看目录开始吧. 本人邮箱:[email protected] 微信公众号:HopToad 欢迎各界交流 1      基本概念 概念就是概念,大伙对这些名词不要死磕,但是对定义一定要理解,理解方能领悟,领悟方能运用自如后创新. 1.1      数据 数据

C语言快速入门系列(二)

C语言快速入门系列(二) 本节引言: 在前面一节中我们对C语言进行了初步的了解,学会了使用IDE进行代码的编写,编译运行! 在这一节中我们会对C语言的基本语法进行进一步的学习! C语言是一门语言,可以和英语进行类比,英语句子 = 单词 + 语法 同样C语言的代码语句,也有着一套自己的规则! 废话不多说,直接正文! 本节学习路线图: 正文: 1.基本字符集 1.1 标识符 ①何为标识符:在C语言中,符号常量,变量,数组,函数等都需要一定的名称,我们把这种名称成为标识符 ②标识符的命名规则 答:只能

oracle学习入门系列之四 oracle数据库简介

oracle学习入门系列之四 oracle数据库简介 终于平滑过渡到oracle了,我们在第一篇中黑了拉里一次,这里就需要给拉里洗白了.话说当年钱钟书先生写完<围城>之后,无意中说,一个鸡蛋就算好吃,也没必要知道下蛋的母鸡是哪只.蛤蟆觉得有点不妥,钱钟书先生那是文人,自然要清高,而且他本是"下蛋"的母鸡当然不愿意被吃蛋的俗人打扰的,况且当时也没有统计粉丝一说.可是我们是吃蛋的啊,而且是大老粗,现在还统计粉丝数量,我们就需要知道谁下的蛋,是不是毒蛋,对不对?也得看看下了这么好

OPEN(SAP) UI5 学习入门系列之一:扫盲与热身(下)

1 UI5代码结构 上一次我们一起用了20秒的时间完成一个UI5版的Hello World.应用打开后有一个按钮,按钮的文字是Hello World,点击这个按钮之后,按钮会慢慢的消失掉(Fade out). 那我们这次就来看一看为了实现这么一个简单的功能,OpenUI5框架至少需要提供哪些内容,或者说我们通过这么一个简单的应用来看一下一个最简单的UI5的应用程序的结构. HTML部分应该不用多说,我们只看和UI5相关的代码,第一部分我们称为Bootstrap,包含以下代码段: <!-- 1.)

OPEN(SAP) UI5 学习入门系列之四:更好的入门系列-官方Walkthrough

好久没有更新了,实在不知道应该写一些什么内容,因为作为入门系列,实际上应该更多的是操作而不是理论,而在UI5 SDK中的EXPLORER里面有着各种控件的用法,所以在这里也没有必要再来一遍,还是看官方的用法更地道. 看一下基于最新的库所推荐的项目结构. 另外,我觉得对于初学者来说是一个非常好的消息,就是UI5版本从1.28更新到1.30以及更高之后,Tutorial系列有了重大更新,之前的Get Started->Tutorials->Application Best Practice现在改为

Maven入门系列(二)--设置中央仓库的方法

原文地址:http://www.codeweblog.com/maven入门系列-二-设置中央仓库的方法/ Maven仓库放在我的文档里好吗?当然不好,重装一次电脑,意味着一切jar都要重新下载和发布. 下载的地址是中央仓库mvnrepository.com,当然,全球很多个仓库. 资源的坐标简称GVA 那么,现在如何修改maven的本地仓库路径呢? 关键在于maven文件夹的config下的settings.xml(E:\IDE\apache-maven-3.3.1\conf\settings

oracle学习入门系列之一 数据库发展与历史

oracle学习入门系列之一 数据库发展与历史 这个oracle学习入门系列是根据本人工作中的一些笔记.项目进行回忆.整理.一方面是自己知识积累,便于技能提升:另一方面是和小伙伴们共进退互通有无,做一个爱分享的好公民.当然最后也夹杂着自己的一个小心愿,改掉自己重理不重文的臭毛病.想想读书考试的时候,当时如果语文英语多个几分,现在可能就不会落到如此...(咳咳~~),做IT也挺好.那就这样开场白切入吧. 既然学习数据库,就不能不抛几个问题了. 1.        为什么需要数据库,什么是数据库 2