我有一種情況,說一個Notebook
存儲Pages
。起初,我有這樣的結構。流利的nHibernate,自動遞增數字以外的一個鍵
class Notebook
{
// ...
public virtual IList<Page> Pages
{
get;
set;
}
}
class Page
{
// ..
public virtual int Number
{
get;
set;
}
}
工作正常。每個頁面都有一個頁碼。我將有能力在我的用戶界面中重新排序頁面,並更新編號。沒問題。後來我發現我可以用一個字典,更簡化它...
class Notebook
{
// ...
public virtual IDictionary<int, Page> Pages
{
get;
set;
}
}
class Page
{
// ..
}
和MAP它像這樣..
public class NotebookMap : ClassMap<Notebook>
{
public NotebookMap()
{
// Specify the Entity Primary Key
Id(x => x.Id);
// one notebook will have a list of pages with page numbers
HasMany<int, Page>(x => x.Pages)
.DictionaryKey<int>("Number")
.DictionaryValue<Page>("Page")
.ForeignKey("Notebook")
.Schema("Notebook").Table("Pages");
Schema(Schemas.Collections); Table("Notebooks");
}
}
好哇,一切是正確的與世界同步。這很好。但我很好奇......
有沒有什麼辦法可以將Number
綁定到什麼東西上,以確保每個Notebook
自動遞增?現在,我只需在我的Service
中使用Notebook.Pages.Count
方法處理此問題,當我添加一個新頁面時。但流利的nHibernate看起來很聰明。有沒有什麼方法可以將它直接集成到映射中,以便我隨時添加一個新頁面,它只是獲得計數並確保編號是合適的?
但是,如果我在應用程序邏輯中保留這個,那麼繼續使用這種方法應該沒問題?我不會將它保留在應用程序邏輯中,但是在我的書中,任何可以減少出錯機會的東西都是很好的。正如我的例子所示,我有點擔心我實際上必須使用``而不是``。它只在'Type'是第一個時纔有效 - 這對我來說毫無意義。 –
Ciel
2011-02-01 20:12:15