Я использую ef core 2.1, а структура данных выглядит следующим образом:
Сущности
public class EmployeeEntity : BaseEntity
{
public string EmployeeNo { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public int? Status { get; set; }
public virtual Guid? OrganizationId { get; set; }
public virtual OrganizationEntity Organization { get; set; }
}
public class OrganizationEntity : BaseEntity
{
public string Text { get; set; }
public Guid? ParentOrganizationId { get; set; }
public virtual OrganizationEntity ParentOrganization { get; set; }
public virtual Guid? ManagerId { get; set; }
public virtual EmployeeEntity Manager { get; set; }
public virtual ICollection<OrganizationEntity> ChildOrganizations { get; set; }
public virtual ICollection<EmployeeEntity> Employees { get; set; }
}
Текущая конфигурация
private void ConfigureOrganization(EntityTypeBuilder<OrganizationEntity> builder)
{
builder.ToTable("Organization");
builder.HasMany(o => o.Employees).WithOne(e => e.Organization).HasForeignKey(f => f.OrganizationId).OnDelete(DeleteBehavior.Restrict);
builder.HasMany(o => o.ChildOrganizations).WithOne(o => o.ParentOrganization).HasForeignKey(o => o.ParentOrganizationId)
.OnDelete(DeleteBehavior.ClientSetNull);
}
private void ConfigureEmployee(EntityTypeBuilder<EmployeeEntity> builder)
{
builder.ToTable("Employee");
builder.HasOne(e => e.Organization).WithMany(o => o.Employees).HasForeignKey(e => e.OrganizationId).OnDelete(DeleteBehavior.Restrict);
}
С учетом этого, яЯ понял, что у меня есть дополнительный столбец OrganizationEntityId в моей таблице Employee, поэтому я попытался с помощью приведенного ниже conf, чтобы исправить это.
Невозможно создать связь между «OrganizationEntity.Employees» и «EmployeeEntity.Organization», поскольку между «OrganizationEntity.Manager» и «EmployeeEntity.Organization» уже существует связь.Свойства навигации могут участвовать только в одном отношении
Какая будет правильная конфигурация для обеспечения надежного отношения и правильных столбцов в таблицах?Я открыт для изменения структуры данных между прочим.
Примечание: словесный эквивалент структуры данных равен ;
- В организации много сотрудников.
- Сотрудник может принадлежать организации или любому
- В организации может быть менеджер (сотрудник) или любой