Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用NHibernate映射?_C#_Nhibernate_Orm_Mapping - Fatal编程技术网

C# 用NHibernate映射?

C# 用NHibernate映射?,c#,nhibernate,orm,mapping,C#,Nhibernate,Orm,Mapping,我的域模型中有以下类: 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; } pu

我的域模型中有以下类:

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; }
}
公共类播放器
{
公共虚拟字符串ID{get;set;}
公共虚拟字符串名称{get;set;}
公共虚拟列表匹配{get;set;}
}
公开课比赛
{
公共虚拟整数ID{get;set;}
公共虚拟播放器播放器1{get;set;}
公共虚拟播放器播放器2{get;set;}
}
正如你所见,一名球员可以打多场比赛,每场比赛都有两名球员。
如何使用Fluent mapping正确映射这些类?

比赛映射上的玩家将是引用比赛表中不同玩家ID的引用(多对一),而玩家上的比赛将是多对多:

公共密封类PlayerMap:ClassMap
{
公共播放器映射()
{
Id(x=>x.Id).GeneratedBy.Native();
Map(x=>x.Name);
HasMany(x=>x.Matches);
}
}
公共密封类匹配映射:类映射
{
公共匹配图()
{
Id(x=>x.Id).GeneratedBy.Native();
引用(x=>x.Player1,“Player1_id”).NotFound.Ignore().Cascade.None();
引用(x=>x.Player2,“Player2_id”).NotFound.Ignore().Cascade.None();
}
}
您需要多对多(本例为多对2)。可能的fluent映射是

public PlayerMap()
{
   [...]
   HasManyToMany(x => x.Matches).Cascade.AllDeleteOrphan();
}
否则nhibernate将不知道使用哪个列(match.player1\u id或match.player2\u id)

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