2010-06-26 105 views
0

考慮一個由EmployeesAdministrators組成的應用程序。NHibernate視圖映射

employeeEmployeeId,NameEmailAddress組成。

員工都存儲在一個遺留系統,並只讀的,所以我有一個不變的Employee類映射到一個視圖(vw_Employee)如下:

[vw_Employee] -> EmployeeID(key), Name, EmailAddress 

現在對於這種應用,一些員工將是標記爲管理員(圖像是一個帶有員工下拉列表的屏幕,您選擇一個,單擊添加,該員工現在是管理員)。

管理員爲員工(具有完全相同的字段),因此數據庫表只需要如下所示:

[Administrators] -> EmployeeID(key) 

在同一個應用程序,我將需要顯示的所有列表管理員姓名和電子郵件地址

沒有NHibernate我可以通過使用EmployeeID主鍵加入[Administrators]表和[vw_Employee]視圖來獲得管理員列表。

我遇到的問題是Administrator類應該是什麼樣子,我將如何映射這個使用NHibernate。

任何幫助,將不勝感激

回答

1

從一個角度OO點,管理員是不是僱員,但它與員工1-1的關係。

所以,你的類將是:

public class Employee 
{ 
    ... 
} 

public class Administrator 
{ 
    public virtual TypeOfEmployeeId Id { get; protected set; } 
    public virtual Employee Employee { get; set; } 
} 

因爲員工是不可變的,沒關係,這是一個觀點。

映射也很簡單:

<class name="Administrator"> 
    <id name="Id"> 
    <generator class="foreign"> 
     <param name="property">Employee</param> 
    </generator> 
    </id> 
    <one-to-one name="Employee"/> 
</class> 

和使用簡單得不能再簡單:

Employee employee = GetTheEmployee(); 
var administrator = new Administrator { Employee = employee }; 
session.Save(administrator); 
+0

所以,你會怎麼弄不屬於管理員員工名單 – kimsagro 2010-06-27 23:00:44