1
我有一个用户类,它看起来像这样在功能NHibernate,我将如何映射以下域模型?
public class User
{
public virtual int Id { get; set; }
public virtual long ValueA { get; set; }
public virtual int? ValueB { get; set; }
}
ValueA
是由系统自动分配。它用于映射到UserClass
的查找。但是,如果VALUEB值存在,那么它会做的查找了UserClass
以不同的方式。
现在我处理它的方式是让用户再进行单独的查询各一次。
return user.ValueB.HasValue ? Find(user.ValueB.Value) : Find(user.ValueA);
有没有什么办法,使功能NHibernate为我做到这一点,所以我可以有UserClass的作为User类,而不必单独做查找的属性?我正在考虑ComponentMap,但我不知道如何使它考虑到两个可能的查找值。
眼下唯一的其他的解决办法,我能想到的是包装的每个return语句在我UserService类返回用户,这不是一个解决方案,我想继续牛逼乌斯之前分配用户级别。
public User Find(long valueA)
{
// Get the user
return AssignUserLevel(user);
}
public User AssignUserLevel(User user)
{
// set the user level of the user
}
感谢您的回答克里斯。 ValueB可以直接映射到其他类,但是ValueA实际上并不是关键值。这只是在搜索中使用的值才能找到合适的UserClass。 – Brandon 2010-06-18 01:55:38