在ABP框架中定义Person实体类
我们在**.Core**(领域层)项目中定义实体。
现在创建一个Person实体,它对应电话薄中的人的信息。同时也会映射到数据库中,作为ltm_Persons表存在。关于 实体映射到数据库的内容,请查看ASP.NET Core 中同步领域模型与数据库架构。代码如下:
namespace YoyoSoft.PhoneBookDemo.PhoneBooks.Persons
{
/// <summary>
/// 人员
/// </summary>
[Table(AppConsts.TablePrefix + "Persons")]
public class Person : FullAuditedEntity<Guid>
{
/// <summary>
/// 邮件地址最大长度
/// </summary>
public const int MaxEmailAddressLength = 250;
/// <summary>
/// 名字最大长度
/// </summary>
public const int MaxNameLength = 50;
/// <summary>
/// 地址的最大长度
/// </summary>
public const int MaxAddressLength = 250;
/// <summary>
/// 姓名
/// </summary>
[Required]
[MaxLength(MaxNameLength)]
public string Name { get; set; }
/// <summary>
/// 邮箱
/// </summary>
[EmailAddress]
[MaxLength(MaxEmailAddressLength)]
public string EmailAddress { get; set; }
/// <summary>
/// 地址信息
/// </summary>
[MaxLength(MaxAddressLength)]
public string Address { get; set; }
}
}
Person的主键类型为Guid。 它继承FullAuditedEntity,其中包含creation,modification和delete等审计属性。 删除默认也开启了软删除。
当我们删除一个人,它不会被数据库删除,而是标记为已删除(请参见 实体 和数据过滤器文档以获取更多信息)。
现在我们需要将Person实体信息,添加到 .EntityFrameworkCore 项目中的PhoneBookDemoDbContext类中,用于EF Core与数据库的映射关系。
public class PhoneBookDemoDbContext : AbpZeroDbContext<Tenant, Role, User, PhoneBookDemoDbContext>, IAbpPersistedGrantDbContext
{
//...其他实体信息
public virtual DbSet<Person> Persons { get; set; }
public PhoneBookDemoDbContext(DbContextOptions<PhoneBookDemoDbContext> options)
: base(options)
{
}
//...其他方法和代码
}