每天学习一点点,成功增加一大步

ABP 框架创建实体数据模型

C# zhanghui 344℃

趁热打铁,前面记录了【ABP 框架 MySql 数据库版的项目创建】,有了开始的一步就会有下一步的深入,数据库连接成功了不可能没有数据结构表吧。下面记录下如何建立数据结构表。

1、在【***.EntityFramework】中创建【UserTasks】文件夹,并创建【UserTask】实体类(注意:类名不能太简单了,比如说:Task,这样容易与框架的一些规则产生冲突,在这里在做数据迁移时就遇到了这个坑)。

2、在继承自 Entity,而 Entity 实现 IEntity 接口,代码如下:

public class UserTask: 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 UserTask()
{
CreationTime = Clock.Now;
State = TaskState.Open; ;
}
public UserTask(string title, string description = null) : this()
{
Title = title;
Description = description;
}
}
public enum TaskState : byte
{
Open = 0,
Completed = 1
}

3、在【***DbContext.cs】文件的【DbContext】类中追加以下代码

//TODO: Define an IDbSet for your Entities...
public IDbSet<UserTasks.UserTask> userTasks { get; set; }

4、执行数据迁移

打开程序包管理器控制台,默认项目选择Entityframework对应的项目后。执行创建迁移命令。

Add-Migration Add_UserTask_Entity

创建成功后,会在 Migrations 文件夹下创建【时间_Add_UserTask_Entity】格式的类文件

5、预置种子数据

简单的预置两条 Task 。创建 DefaultTestDataForUserTask 类

class DefaultTestDataForUserTask
{
private readonly orderCrmDbContext _context;
private static readonly List<UserTask> _userTasks;
public DefaultTestDataForUserTask(orderCrmDbContext context)
{
_context = context;
}
static DefaultTestDataForUserTask()
{
_userTasks = new List<UserTask>()
{
new UserTask("LX ABP deom", "LX how to use abp framework to build a MPA application."),
new UserTask("Make LX", "Cook 2 dishs")
};
}
public void Create()
{
foreach (var task in _userTasks)
{
if (_context.userTasks.FirstOrDefault(t => t.Title == task.Title) == null)
{
_context.userTasks.Add(task);
}
_context.SaveChanges();
}
}
}

然后在【Configuration】类中的【Seed】方法中,添加以下代码。

new DefaultTestDataForUserTask(context).Create();

在程序包管理器控制台,输入【Update-Database】,回车执行迁移。执行成功后,查看数据库,【UserTasks】表创建成功,且表中已存在两条测试数据。

因时间原因,以上是实践成功后的简单描述,详细的描述请点这里

转载请注明:隨習筆記 » ABP 框架创建实体数据模型