2010-11-09 25 views
1

我是NHibernate的新手。假設你有一個Customer類這樣NHibernate對象與字段作爲查找

public class Customer { 
    public virtual int CustomerID { get; set; } 
    public virtual string Name { get; set; } 
    public virtual CustomerType CustomerType { get; set; } 
} 

其中CustomerType是簡單地處理值

  • 內部客戶
  • 外國客戶
  • 查找類...

所以CustomerType值不會經常變化,在某些情況下他們根本不改變(例如,一個人的性別)

哪個是處理這種情況的最好方法?

如果我在本示例中映射查找類時嘗試插入新客戶,應該先在數據庫上找到正確的CustomerType?或者更好地使用Enum類來處理這些情況?

回答

1

你可以做任何 - 它不是一個真正的NHibernate問題。

枚舉顯然在簡單性方面提供了巨大的回報,但隨着圍繞它們的業務邏輯變得更加複雜,它將開始受到歡迎。

對於實體,可以將業務規則作爲實體的屬性或方法包含在內。使用枚舉,業務邏輯必須在其他地方處理,這可能會導致更復雜的代碼。

可以在以後將枚舉轉換爲實體,但不能直接轉換。

+0

是的,你說得對,當你說這不是一個真正的NHibernate問題。無論如何,我已經使用過CodeSmith作爲生成器的netTiers架構,並且有一個選項可以使用Enum的一些實體。我想知道NHibernate是否有這樣的功能 – Lorenzo 2010-11-09 12:37:34

1

一個比枚舉更好的替代方法是從uNhAddIns得到WellKnownInstanceType

這將幫助您實施幾乎沒有附加噪音的策略模式。

+0

看起來很有趣。我如何使用它?你能否提供一個小樣本開始嘗試? – Lorenzo 2010-11-09 12:41:51

+0

http://code.google.com/p/unhaddins/source/browse/#hg/uNhAddIns/uNhAddIns.Test/UserTypes – 2010-11-09 13:29:19