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
Из моего чтения тип данных hierarchyid в настоящее время не поддерживается в EF, но некоторые из них предложили обходные пути, такие как создание вычисленных столбцов (Node.ToString()), которые я сделал выше.
Есть ли способ настроить EF так, чтобы он распознавал отношения родителя/ребенка, чтобы я мог эффективно иметь коллекцию подчиненных? например.
Employee.Subordinates
Единственное, о чем я могу думать, это создать столбец ManagerId с FK, но затем я эффективно храню иерархию в двух местах.
Спасибо за любую помощь!