本文将介绍在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