using Furion.DatabaseAccessor; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { /// /// 部门 /// public class Department : CommonEntity, IEntityTypeBuilder, IIsDisabled { public Department() { Children = []; } /// /// 上级Id /// public Guid? ParentId { get; set; } /// /// 上级 /// public Department Parent { get; set; } /// /// 下级 /// public List Children { get; set; } /// /// 部门路径 /// public string Path { get; set; } /// /// 企业Id /// public Guid EnterpriseId { get; set; } /// /// 企业 /// public Enterprise Enterprise { get; set; } /// /// 名称 /// [Required] public string Name { get; set; } /// /// 备注 /// public string Remark { get; set; } /// /// 是否禁用 /// public bool IsDisabled { get; set; } public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator) { entityBuilder .HasMany(x => x.Children) .WithOne(x => x.Parent) .HasForeignKey(x => x.ParentId) .OnDelete(DeleteBehavior.ClientSetNull); } } }