NHibernate对象,字段为查找

时间:2010-11-09 12:07:58

标签: c# nhibernate fluent-nhibernate nhibernate-mapping

我是NHibernate的新手。假设您有一个像这样的Customer类

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类?

2 个答案:

答案 0 :(得分:1)

你可以做任何一件事 - 它不是真正的NHibernate问题。

Enums显然在简单性方面提供了巨大的回报,但随着围绕它们的业务逻辑变得更加复杂,它们将开始受到欢迎。

对于实体,业务规则可以作为实体的属性或方法包含在内。使用枚举,业务逻辑必须在其他地方处理,这可能会产生更复杂的代码。

可以在以后将枚举转换为实体,但不能直接转换。

答案 1 :(得分:1)

来自WellKnownInstanceTypeuNhAddIns更好地替代了枚举。

它可以帮助您实现几乎没有增加噪音的策略模式。