zoukankan      html  css  js  c++  java
  • ABP学习入门系列(二)(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

    代码:https://github.com/tianxiangd/LearnAbp

  • 相关阅读:
    超市账单管理系统设计思路
    Hibernate之Query.uniqueResult()结果为数值的注意事项
    Hibernate之Query.uniqueResult()结果为数值的注意事项
    Struts2加载自定义库注意事项
    135编辑器使用方法
    SQLite – ORDER 子句
    Readings
    自己常用的导航工具
    Spring中的事件处理
    iOS-Runtime
  • 原文地址:https://www.cnblogs.com/tianjiaxiaobaicai/p/7826241.html
Copyright © 2011-2022 走看看