簡體   English   中英

使用NHibernate進行映射?

[英]Mapping with NHibernate?

我的域模型中有以下課程:

public class Player
{
    public virtual string ID { get; set; }
    public virtual string Name { get; set; }
    public virtual List<Match> Matches { get; set; }
}
public class Match
{
    public virtual int ID { get; set; }
    public virtual Player Player1 { get; set; }
    public virtual Player Player2 { get; set; }
}

如您所見,一個玩家可以玩多個比賽,每個比賽都有兩個玩家。 如何使用Fluent映射正確映射這些類?

比賽映射上的玩家為引用(多對一),引用了比賽表中的不同玩家編號,玩家的匹配為hasMany(一對多):

public sealed class PlayerMap : ClassMap<Player>
{
    public PlayerMap()
    {
        Id(x => x.ID).GeneratedBy.Native();
        Map(x => x.Name);
        HasMany(x => x.Matches).Cascade.SaveUpdate();
    }
}

public sealed class MatchMap : ClassMap<Match>
{
    public MatchMap()
    {
        Id(x => x.ID).GeneratedBy.Native();
        References(x => x.Player1, "player1_id").NotFound.Ignore().Cascade.None();
        References(x => x.Player2, "player2_id").NotFound.Ignore().Cascade.None();
    }
}

您需要多對多(本例為多對二)。 可能的流利映射是

public PlayerMap()
{
   [...]
   HasManyToMany(x => x.Matches).Cascade.AllDeleteOrphan();
}

否則,nhibernate將不知道要使用哪一列(match.player1_id或match.player2_id)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM