在ABP框架中实现一对多的关联关系
到目前为止,我们甚至都没有提到电话号码。现在是扩展我们的领域模型以支持一个人拥有多个电话号码的时候了。
创建Phone的实体信息
首先,我们需要创建一个电话的实体信息,在.Core项目中创建一个新的实体Phone开始:
/// <summary>
/// 电话
/// </summary>
[Table(AppConsts.TablePrefix + "Phones")]
public class Phone : FullAuditedEntity<long>
{
public const int MaxNumberLength = 16;
[ForeignKey("PersonId")]
public virtual Person Person { get; set; }
public virtual Guid PersonId { get; set; }
[Required]
public virtual PhoneType Type { get; set; }
[Required]
[MaxLength(MaxNumberLength)]
public virtual string Number { get; set; }
}
电话实体需要关联在ltmPersons表中。它的主键类型为long,并且继承了完整的审计日志属性。
我们在Person实体中添加ICollection类型的Phones实体。
[Table(AppConsts.TablePrefix + "Persons")]
public class Person : FullAuditedEntity<Guid>
{
//...其他属性
public virtual ICollection<Phone> Phones { get; set; }
}
在.Core项目中,我们创建一个PhoneType的枚举类型。
public enum PhoneType : byte
{
Mobile,
Home,
Business
}
最后,我们还将DbSet类型的Phone添加到EF的DbContext中:
public virtual DbSet<Phone> Phones { get; set; }