ABP之创建实体

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进行修改

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

转载于:https://www.cnblogs.com/XZhao/p/8179623.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值