所以我是NHibernate的新手,並且有問題。也許有人可以幫助我。 給定一個用戶級的很多很多特性:自引用表
public class User
{
public virtual Int64 Id { get; private set; }
public virtual string Firstname { get; set; }
public virtual string Lastname { get; set; }
public virtual string Username { get; set; }
public virtual string Email { get; set; }
...
public virtual string Comment { get; set; }
public virtual UserInfo LastModifiedBy { get; set; }
}
這裏是一些DDL爲表:
CREATE TABLE USERS
(
"ID" BIGINT NOT NULL ,
"FIRSTNAME" VARCHAR(50) NOT NULL ,
"LASTNAME" VARCHAR(50) NOT NULL ,
"USERNAME" VARCHAR(128) NOT NULL ,
"EMAIL" VARCHAR(128) NOT NULL ,
...
"LASTMODIFIEDBY" BIGINT NOT NULL ,
) IN "USERSPACE1" ;
數據庫表字段「LASTMODIFIEDBY」從用戶持有的審計目的的Id誰插入或更新的情況下行事。這通常是一個管理員。 因爲用戶界面不會顯示這個Int64而是管理員名稱(類似'姓氏,名字'),我需要通過自我引用表USERS來檢索這些值。接下來是,一個類型的用戶的整個對象將被不必要的字段數量矯枉過正。因此,有一個UserInfo類具有更小的佔用空間。
public class UserInfo
{
public Int64 Id { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
public string FullnameReverse
{
get { return string.Format("{0}, {1}", Lastname ?? string.Empty, Firstname ?? string.Empty); }
}
}
所以這裏就開始了這個問題。其實我不知道如何完成這個任務。我不知道我是否也必須提供類UserInfo的映射,而不僅僅是類User。我想將UserInfo作爲Composite-element集成到User-class的映射中。但我不知道如何定義USERS.ID和USERS.LASTMODIFIEDBY表字段之間的映射。 希望我可以清楚地描述我的問題,以獲得一些提示。非常感謝!
謝謝你的迴應。但是,我真的需要檢索幾十個不需要的和不需要的字段及其內容,只能獲取「姓氏+」,「+名字」。 在SQL中,我會寫'select a.id,a.username,...,b.firstname + || ','+ b.lastname from a a join a users b on a.lastmodified = b.id'。 我很高興使用NH,但這樣一個簡單的任務讓我頭痛。哎呀。 如果我找不到解決方案,我將使用User-Class而不是UserInfo。但儘管你稱之爲過早,但我無法看到使用大型用戶對象與裁剪小對象的優勢。 – mue 2010-05-23 18:30:55
考慮到我們談論的是單條記錄,選擇網絡延遲時間可能大於行傳輸時間的地方,並且NH允許對實體進行兩級緩存,但我認爲除了頭痛之外,您還不會得到什麼試圖對其進行微觀管理。 – 2010-05-23 18:55:25