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);
}
}
}