2012-03-16 5 views
0

解決策を探してから多くを探しましたが、出てきたのはXMLマッピングの代わりにFHマッピングを使用したソリューションでした。 私は、2人のユーザーがお互いをスキャンできるQRスキャンシステムで作業しています。あるユーザーが他のユーザーを撃った場合、そのユーザーのIDはこの表に記入されています。 したがって、2つのFKは一意になります。 1-2。2つの外部キーを1つのプライマリキーにマッピングする(XMLマッピング)

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; } 
} 

テーブルSnappedUsersは、ユーザーテーブルから2つの外部キーが含まれている必要があります:2-1、1-3 だから私のドメインは、実際にはこの二つのクラスが含まれています。 (私はShooter ISetとTarget ISetをUserクラスに置く必要はありません) 実際にこれらのことをXMLマッピングでマップする必要はありますか?私は今自分で解決策を見ていない。事前

+0

Thxをあなたすることはできませんbasicly、メッセージはユニークなものを持っていないし、それがコンポーネントではない場合NHibernateのは、アイデンティティのいくつかの種類を必要とするため。 – Firo

+0

@Firoよろしくお願いします。あなたは正しい、彼らは本当にユニークなものではない。メッセージの例は実際にはより良い説明を与えるための例でした。私の実際の世界のアプリケーションは、お互いのQRコードをスキャンすることです。あなた(id = 1)とI(id = 2)を登録すると、私たちは両方ともQRコードを取得します。私があなたのものをスキャンすると、IDが外部キーとしてこのテーブルに追加されます。あなたが私をスキャンすると、あなたは射手であり、私は目標です。だから、私たちの2つのキーは、一意です。 – Gigi2m02

答えて

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

昨日誰かが私に同じことを言っていましたが、余分な一意のIDを使用するようアドバイスしました。これについてあなたの意見は何ですか? – Gigi2m02

+0

それは、同じ参照を持つ複数のSnappedUsersを持つ方が簡単になり、痛いことはありません – Firo

+0

そうです。しかし、1人のユーザーを複数回スナップする意図はありません。 – Gigi2m02