ABP框架是一个非常庞大的框架,里面的东西有很多,那么如果我需要使用ABP进行项目的开发,具体的使用流程是怎样的呢?接下来将以一个简单的电影票管理“系统”为例子具体的实现一下。

一. 实体的创建

实体是属于领域层的,所以我们创建到Core项目中

1.创建实体的时候需要继承自Entity,这个是遵循了ABP框架的规则,在ABP中所有的实体都是继承自Entity,Entity这个类实际上是实现了IEntity这个接口,这个接口中默认的已经定义了Id这个属性,所以我们的实体不需要写Id属性,默认的Id是int的主键类型,当需要其它类型,可以使用Entity的泛型类,例如Entity<long>

2. 在实际的项目中,我们经常有一些常用的字段,比如创建时间CreationTime、软删除IsDeleted、创建人CreatorUserId等等,这些在ABP框架中都已经实现了相应的审计接口和审计实现类。ABP建议如果没有特殊的情况,何必费力自己去实现接口呢?嘿嘿,直接使用实现类,我上面的实体中使用了审计接口ICreationTime,然后自己实现了这个CreationTime这个属性。其他的在这里不再举例。

3. 作为一个数据库迁移的优化。需要对string类型指定相应的长度,否则迁移到数据库的时候将会对应Max长度,浪费空间。

二.  数据库迁移

在我们使用CodeFirst的时候,我们需要手动的创建DbContext,在ABP框架中已经创建好了,在EntityFrameworkCore层找到DbContext,然后为我们自己定义的实体添加IDbSet

然后使用指令Add-Migration “addMovieTicket”,生成如下的迁移文件

接下来直接使用Update-database就可以了。

如果我们想在初始化的时候向数据库中添加几条数据,那么怎么办呢?

这个我们可以看到在EntityFramworkCore项目下有一个Seed文件夹,这个文件夹里的文件就是用来预制种子数据的,所以我们可模仿创建相应的Creator

创建好相应的Creator,还得去调用这个Creator才行,找到SeedHelper文件,修改SeedHostDb。

接下来再次Update-database(必须已经创建好相应的表,否则提示找不到对应的表)就OK了

补充一下:

常用的迁移指令

1.创建: add-migration(可以通过添加参数-Context针对某一个DbContext进行迁移)

2.更新到数据库: update-database

3. 版本回退 update-database -migration “addMovieTicketPreview‘

问题更正:

从我上面自定义的添加一些初始化数据的Creator就可以发现,当Context每次初始化的时候,都会去创建一个相同名称的电影信息,数据库如下

所以对Creator进行修改

这样就解决了,只怪当初写的时候就偷懒了。。。。

ABP之创建实体的更多相关文章

  1. 实现领域驱动设计 - 使用ABP框架 - 创建实体

    用例演示 - 创建实体 本节将演示一些示例用例并讨论可选场景. 创建实体 从实体/聚合根类创建对象是实体生命周期的第一步.聚合/聚合根规则和最佳实践部分建议为Entity类创建一个主构造函数,以保证创 ...

  2. 在ABP中创建Person实体类

    经过之前的准备目前我们的项目,终于可以搞正式的开发工作了. 创建实体Person 在Core类库中添加Person类 /// <summary> /// 联系人 /// </summ ...

  3. abp(net core)+easyui+efcore仓储系统——领域层创建实体(三)

    abp(net core)+easyui+efcore仓储系统目录 abp(net core)+easyui+efcore仓储系统——ABP总体介绍(一) abp(net core)+easyui+e ...

  4. ABP入门教程6 - 领域层创建实体

    点这里进入ABP入门教程目录 创建实体 在领域层(即JD.CRS.Core)下新建文件夹Entitys //用以存放实体对象添加一个实体类Course.cs //课程信息 using Abp.Doma ...

  5. abp实战-ContosoUniversity Abp版-2添加菜单与创建实体

    这里略过理论篇,但需要了解abp分层,对于小项目来说abp分层有点复杂,这里只是演示,个别地方没有完全按照ddd理论去写,后期我将会完善. 1. 创建ContosoUniversity相关功能的菜单 ...

  6. ABP领域层创建实体

    原文作者:圣杰 原文地址:ABP入门系列(2)——领域层创建实体 在原文作者上进行改正,适配ABP新版本.内容相同 这一节我们主要和领域层打交道.首先我们要对ABP的体系结构以及从模板创建的解决方案进 ...

  7. ABP(现代ASP.NET样板开发框架)系列之10、ABP领域层——实体

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之10.ABP领域层——实体 ABP是“ASP.NET Boilerplate Project (ASP.NET样板 ...

  8. ABP理论学习之实体类

    返回总目录 本篇目录 实体类 惯例接口 审计 软删除 激活/未激活 IEntity接口 实体是DDD(领域驱动设计)的核心概念之一.Eirc Evans是这样描述的实体的:"它根本上不是通过 ...

  9. ABP领域层——实体

    ABP领域层——实体 基于DDD的现代ASP.NET开发框架--ABP系列之10.ABP领域层——实体 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的 ...

随机推荐

  1. Phpcms v9 实现首页|列表页|内容页调用点击量的代码

    很多朋友经常问Phpcms v9的首页.列表页.内容页点击量如何调用.今天给大家分享phpcms V9如何分别在首页.列表页.内容页调用点击量代码 1,Phpcms v9首页调用点击量 {pc:con ...

  2. Ubuntu14.04下Mongodb(离线安装方式|非apt-get)安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 说在前面的话  首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu LTS \n \l r ...

  3. iOS中js与objective-c的交互(转)

    因为在iOS中没有WebKit.Framework这个库的,所以也就没有 windowScriptObject对象方法了.要是有这个的方法的话 就方便多了,(ps:MacOS中有貌似) 现在我们利用其 ...

  4. Android数据库升级、降级、创建(onCreate() onUpgrade() onDowngrade())的注意点

    以下内容可以作为面试官在面试的时候的问题,感觉比较好,是比较常用的知识点,可以用来考察基础是否扎实. 也可以程序猿学习.开发中的注意点.因为稍微不注意,就有可能导致数据库不能用. DBAdapter. ...

  5. 【能力提升】SQL Server常见问题介绍及高速解决建议

    前言 本文旨在帮助SQL Server数据库的使用人员了解常见的问题.及高速解决这些问题.这些问题是数据库的常规管理问题,对于非常多对数据库没有深入了解的朋友提供一个大概的常见问题框架. 以下一些问题 ...

  6. MySQL --- 计算指定日期为当月的第几周

    SET @d=NOW(); ; 啦啦啦

  7. 【GIS】WGS84与Web墨卡托理解(转)

    坐标系 · WGS84,地理坐标系,单位度,在三维上可以很好的展示全球的数据,但在二维上显示时在高纬度地区变形较大,另由于WGS84坐标系与CGCS2000坐标系差异很小,所以WGS84坐标系在Web ...

  8. Oracle sqlldr导入之“MAXIMUM ERROR COUNT EXCEEDED”

    昨天看到一个同事在通过PL/SQL Developer工具把文本数据往oracle表;有两个文本:一个有30万条记录:一个7万多条记录.在导入到过程中:出现错误记录还需要点击确认.不过使用黑科技(屏幕 ...

  9. CentOS6.8_64位手动安装MySQL5.6

    1.在CentOS6.8上安装mysql5.6 2.下载编译包 wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.35-linu ...

  10. 模拟登陆WINDOWS认证的sharepoint页面

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...