ABP学习入门系列(二)_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > ABP学习入门系列(二)

ABP学习入门系列(二)

 2017/11/13 16:03:29  田家小白菜  程序员俱乐部  我要评论(0)
  • 摘要:本文将介绍在ABP框架中使用代码创建一个数据库表1.下图是abp的体系结构。我们要是实现创建数据库表的功能主要就是在下图中domain(领域层)做相应的一些操作。2,看一下解决方案,如下图。core就是我们要做相应修改的项目从上至下依次application(应用服务层),core(领域层),EntityFramework(基础设施层),web和webapi(Web和展现)3,在core下创建Tasks文件夹,在文件夹下创建Task类。usingSystem;usingSystem
  • 标签:学习

本文将介绍在ABP框架中使用代码创建一个数据库表

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

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

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

class="brush:csharp;gutter:true;">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

发表评论
用户名: 匿名