Свободное отображение Nhinernate для таблицы иерархической/древовидной структуры

У меня есть иерархическая (древовидная структура) таблица SQL Server TEmployee со следующими столбцами

Id bigint identity(1,1) not null
FirstName nvarhcar(50) not null
LastName nvarchar(50) not null
ManagerId bignint null

Идентификатор столбца является первичным ключом. У каждого сотрудника есть или есть руководитель; если он / она это делает, то значение столбца ManagerId его / ее «я» ссылается на значение Id другой строки сотрудника менеджера. Например, некоторые записи для таблицы TEmployee:

1 John Doe    null
2 Jane Smith  1
3 Keith Johnson 1
4 Fox   Lynson  2
5 Kim   McFeinstein 4
...

У сотрудника Джона Доу нет менеджера. Но он менеджер Джейн Смит и Кейт Джонсон. Менеджер Ким Макфайнштейн — Фокс Линсон.

Я хотел бы знать, как написать класс модели предметной области и класс сопоставления, используя сопоставление Fluent NHibernate. Кроме того, я хотел бы, чтобы в кодах классов сопоставления был хороший способ каскадного удаления. Другими словами, если я удалю John Doe, то все его дочерние элементы (сотрудники, которыми управляет John Doe) также будут рекурсивно удалены.

Пожалуйста помоги. Спасибо.

Класс модели домена, но я не уверен в его исходных кодах:

public class Employee
{
   public virtual long Id {get;set;}
   public virtual string FirstName {get;set;}
   public virtual string LastName {get;set;}
   public virtual Employee  Manager {get;set;}  // not sure here ???
}

Mapping class, но я тоже не уверен в его исходных кодах:

public class EmployeeMap : MapClass<Employee>
{
   Table("TEmployee");
   SchemaAction.None();
   // not sure about following codes
   ???
}

person user1219702    schedule 15.06.2012    source источник
comment
просмотрите ответы, данные на ваши вопросы, и выберите лучший ответ на ваш вопрос. если нет ни одного, который приведет вас к решению, добавьте комментарии или отредактируйте вопрос, чтобы сообщить, почему он не отвечает на него, и предоставить дополнительную информацию.   -  person Firo    schedule 27.06.2012