本文將介紹在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