趁热打铁,前面记录了【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 框架创建实体数据模型