У меня проблема с сопоставлением классического дерева БД с сущностью фреймворка.
Вот моя БД:
CREATE TABLE intranet_organization_units
(
[OrganizationUnitId] INT IDENTITY PRIMARY KEY,
[ParentOrganizationUnitId] INT NULL,
[Name] NVARCHAR(50) NOT NULL
)
организация :
public class OrganizationUnit
{
public int OrganizationUnitId { get; set; }
public string Name { get; set; }
public int? ParentOrganizationUnitId { get; set; }
public virtual OrganizationUnit ParentOrganizationUnit { get; set; }
public virtual ICollection<OrganizationUnit> ChildrenUnits { get; set; }
}
и, наконец, отображение:
public class OrganizationUnitMapper : EntityTypeConfiguration<OrganizationUnit>
{
public OrganizationUnitMapper()
{
ToTable("intranet_organization_units");
Property(x => x.Name).HasColumnName("Name").IsRequired();
HasMany(x => x.ChildrenUnits).WithOptional().HasForeignKey(x => x.OrganizationUnitId);
HasOptional(x => x.ParentOrganizationUnit).WithMany().HasForeignKey(x => x.ParentOrganizationUnitId);
}
}
Когда я запускаю приложение, я получаю это исключение:
Во время создания модели были обнаружены одна или несколько ошибок проверки:
System.Data.Edm.EdmAssociationEnd: : Множественность недопустима в роли 'OrganizationUnit_ChildrenUnits_Target' в отношении 'OrganizationUnit_ChildrenUnits'. Поскольку зависимая роль относится к ключевым свойствам, верхняя граница кратности зависимой роли должна быть равна «1».
Так где проблема? Спасибо