有没有什么办法可以在NHibernate中建立对称的自连接关系映射?假设我们有两个表:NHibernate自加入多对多的对称关系(人朋友问题)
Users
id
Relations
id
user1
user2
relation_type
用户和关系类应该是这样的:
class User
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual ISet<Relation> Relations { get; set; }
}
class Relation
{
public virtual int Id { get; set; }
public virtual User User1 { get; set; }
public virtual User User2 { get; set; }
// Let's leave the RealationType as string for the sake of brevity
public virtual string RelationType { get; set; }
}
我不想在relations
表有两行相同的关系。但是关系必须是对称的,这意味着如果两个用户A和B之间存在关系,则用户A的集合必须包含与用户B的关系,并且用户B的关系必须包含与A的关系。
这听起来像是一个挑战。但是,有人能解决这个问题吗?请,如果可以的话,发布xml映射。我没有使用Fluent。
好了,这样的话,对于关系的映射将不会停... <类名=“关系”表=“关系”> <复合-ID> <键多对多-one name =“User1”class =“User”/> composite-id> 我该如何映射用户类?由于id可以在'user1'或'user2'列中。 –
svallory
2009-11-29 18:57:18