Entity Framework HierarchyId Временные решения
EF 5.0
Я работаю над прототипом для совместного тестирования иерархической структуры и структуры сущностей. У меня есть следующая схема:
Create Table dbo.Employee
(
EmployeeId int identity not null,
Name nvarchar(100) not null,
Node hierarchyid not null,
NodePath as Node.ToString() persisted,
Level AS Node.GetLevel() persisted,
ManagerNode as Node.GetAncestor(1) persisted,
ManagerNodePath as Node.GetAncestor(1).ToString() persisted
);
Alter Table dbo.Employee
Add Constraint EmployeePK Primary Key NonClustered (EmployeeId);
Go
--Enforce Hierarchy
Alter Table dbo.Employee
Add Constraint EmployeeManagerNodeNodeFK Foreign Key (ManagerNode) References Employee(Node);
Go
Create Unique Clustered Index EmployeeDepthFirstIndex on dbo.Employee(Node);
Go
Create NonClustered Index EmployeeBreathFirstIndex on dbo.Employee(Level, Node);
Go
Из моего прочтения, тип данныхВ настоящее время поддерживается в EF, но некоторые предлагают обходные пути, такие как создание вычисляемых столбцов (Node.ToString ()), которые я сделал выше.
Есть ли способ настроить EF так, чтобы он распознавал отношения Родитель / Дочерний, чтобы я мог эффективно иметь коллекцию подчиненных? например
Employee.Subordinates
Единственное, о чем я могу думать, - это создать столбец ManagerId с FK, но тогда я эффективно храню иерархию в двух местах.
Спасибо за любую помощь!