实体框架包含两个外键

时间:2018-03-12 18:57:14

标签: c# entity-framework linq

我有一个Team表和一个Matches表。

团队表:

Id Name
------------
1  TeamA
2  TeamB

如果TeamA希望玩TeamB,我们将在Matches

中添加一行

匹配表格:

Id HomeTeamId RivalTeamId
-------------------------
1       1          2

如果TeamB希望挑战TeamA,我们将继续执行以下操作

匹配表格:

Id   HomeTeamId   RivalTeamId
-----------------------------
 1       1             2
 2       2             1

我的TeamMatch POCO(仅相关代码)如下所示:

public class Team : BaseEntity
{
        public int Id { get; set; }
        public string Name { get; set; }

        public ICollection<Match> HomeMatches { get; set; }
        public ICollection<Match> RivalMatches { get; set; }
}

public class Match : BaseEntity
{
        public int Id { get; set; }
        public string Description { get; set; }

        //navs
        public Team HomeTeam { get; set; }
        public int HomeTeamId { get; set; }

        public Team RivalTeam { get; set; }
        public int RivalTeamId { get; set; }
}

问题:我想专家们已经注意到在查询过程中我会遇到一个循环的可能性。我的问题是我想查询TeamA的比赛。我会为此做

 Team team= dbContext.Team.
                Include("HomeMatches").

在上面的团队对象中,我注意到 BOTH 属性HomeMatchesRivalMatches似乎已填满。

我只想填充HomeMatches属性。我只对TeamA选择参加的比赛感兴趣,而不是那些TeamA是竞争对手的比赛。

我的问题是,当我明确提到Include("HomeMatches")时,为什么RivalMatches属性也被填充?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用here

中的显式加载