2010-11-09 24 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