logo头像

学问之道无穷,而总以有「恒」为主

.Net开源框架ABP初探(二)— 使用Code First方式创建数据表

初用abp可能会对它的架构各层的作用有一些迷茫,比如我们平时开发中的分层中可能会专门有一个模型层(可能命名为xxx.Model),用来存储开发中和数据库表相对于的模型映射类,可能会有一个持久层/仓储层(可能命名为xxx.Repository)来专门处理数据的持久化(即增删查改等)。所以在初使用abp时会感觉无从下手,其实在abp中这两个层的功能都被放到了.Core项目下,abp基于模块化的考虑,在.Core项目中把相同模块的一些类(包括模型和持久化)放在了同一目录。

1.创建模型类

  • 打开.Core项目,新建新建一个项目文件夹(Clothes);
    为了演示表关联及外键的使用,创建两个类:
  • 创建类ClothesCategoty.cs
    1
    2
    3
    4
    5
    6
    7
    8
    using Abp.Domain.Entities;
    namespace myTest.Clothes
    {
    public class ClothesCategory:Entity
    {
    public virtual string Name { get; set; }
    }
    }

using Abp.Domain.Entities引用Abp.Domain.Entities,abp中所有的类都继承自Abp.Domain.Entities.Entity,集成后会自动创建表主键字段Id。

  • 创建类Clothes.cs
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    using System;
    using System.ComponentModel.DataAnnotations.Schema;
    using Abp.Domain.Entities;

    namespace myTest.Clothes
    {
    [Table("Clothes")]
    public class Clothes:Entity
    {
    public virtual DateTime CreationTime { get; set; }
    public virtual string PictureUrl { get; set; }
    [ForeignKey("ClothesCategoryId")]
    public virtual ClothesCategory ClothesCategory { get; set; }
    }
    }

[Table(“xxx”)]指定表名,不指定默认使用类名;[ForeignKey(“xxx”)]指定关联表外键的名称。

2.添加类到DbContext

打开.EntityFrameworkCore项目,找到xxxDbContext类,在类中加入新模型的相关代码:

1
2
public virtual DbSet<Clothes.Clothes> Clothes { get; set; }
public virtual DbSet<Clothes.ClothesCategory> ClothesCategory { get; set; }

如下图:

3.执行命令

打开NuGet程序包管理控制台,选择默认项目为.EntityFrameworkCore项目。

  • 执行Add-Migration xxxx,其中xxxx可自主命名;

    执行完成后会在项目的Migrations文件夹下自动生成两个文件,如下图:

  • 执行“Update-Database”

    至此,数据库表创建完成。

上一篇