Nhibernate 将两个外键映射到一个主键(XML映射)

Nhibernate 将两个外键映射到一个主键(XML映射),nhibernate,orm,Nhibernate,Orm,我搜索了很多关于这个问题的解决方案,但唯一的结果是使用FH映射而不是XML mappng的解决方案。 我正在使用QR扫描系统,两个用户可以互相扫描。如果一个用户枪杀了另一个用户,他们的id将填入此表中。 所以这两个FK在一起是独一无二的。1-2. 2-1, 1-3 因此,我的域实际上包含这两个类: public class SnappedUsers { public virtual User Shooter {get; set;} public virtual User Targ

我搜索了很多关于这个问题的解决方案,但唯一的结果是使用FH映射而不是XML mappng的解决方案。 我正在使用QR扫描系统,两个用户可以互相扫描。如果一个用户枪杀了另一个用户,他们的id将填入此表中。 所以这两个FK在一起是独一无二的。1-2. 2-1, 1-3 因此,我的域实际上包含这两个类:

public class SnappedUsers
{
    public virtual User Shooter {get; set;}
    public virtual User Target { get; set; }
    public virtual DateTime SnapDate { get; set; }
}
public class User : Entity
{
    public virtual string DisplayName { get; set; }
    public virtual string EmailAddress { get; set; }
    public virtual string Password { get; set; }
    public virtual string ProfilePicUrl { get; set; }
    public virtual int Money { get; set; }
    public virtual DateTime RegistrationDate { get; set; }
}
表SNAPDUSER应该包含来自用户表的两个外键。 (我没有必要将射手ISet和目标ISet放在我的用户类中。) 我实际上必须如何用XML映射来映射这些东西?我自己目前还看不到解决办法

提前Thx


<composite-id> 
  <key-many-to-one name="Shooter" column="shooter_Id" >
  <key-many-to-one name="Target" column="target_Id" />
</composite-id>

基本上不能,因为消息没有唯一性,如果不是组件,NHibernate需要某种标识。@Firo好的,谢谢您的回复。你说得对,他们的作品确实没有什么独特之处。消息示例实际上是一个提供更好解释的示例。我的真实世界应用程序是关于扫描彼此的二维码。如果你(id=1)和我(id=2)注册,我们都会得到一个二维码。扫描时,您的或id将作为外键添加到此表中。当你扫描我时,你是枪手,我是目标。昨天有人对我说了同样的话,但建议我使用一个额外的唯一id。你对此有什么看法?如果有多个相同参考资料的Snapdusers,这会更容易,而且不会造成伤害。是的,这是真的。但它并不是要多次抓拍一个用户。