MongoDB导航属性

时间:2014-10-04 20:36:38

标签: c# mongodb mongodb-.net-driver

我是MongoDB的新手,并编写了我的第一个EntitySetController来访问我的示例数据。我的问题是,是否有相当于MongoDB中的导航属性?我试图在我的GET方法中使用Include,但没有任何运气。到目前为止,这是我的代码:

    Team object :

public class Team
    {
        [BsonId]
        [BsonRepresentation(BsonType.ObjectId)]
        public string Id { get; set; }
        public string TeamName { get; set; }
        public string BadgeSmall { get; set; }
        public string BadgeLarge { get; set; }
        public string TeamImage { get; set; }
        public string Formation { get; set; }
    }

Fixture object :

public class Fixture
    {
        [BsonId]
        [BsonRepresentation(BsonType.ObjectId)]
        public string Id { get; set; }
        public DateTime FixtureDate { get; set; }
        [BsonRepresentation(BsonType.ObjectId)]
        //foreign key
        public string AwayTeamId { get; set; }
        //navigation properties
        public virtual Team AwayTeam { get; set; }
        [BsonRepresentation(BsonType.ObjectId)]
        //foreign key
        public string HomeTeamId { get; set; }
        //navigation properties
        public virtual Team HomeTeam { get; set; }
        public byte? AwayTeamScore { get; set; }
        public byte? HomeTeamScore { get; set; }

        public string AwayTeamScorers { get; set; }
        public string HomeTeamScorers { get; set; }
    }

Fixture controller :

[EnableQuery]
        public IQueryable<Fixture> GetFixtures()
        {
            IQueryable<Fixture> m = mongoDatabase.GetCollection<Fixture>("Fixtures").FindAll().AsQueryable().Include("HomeTeam").Include("AwayTeam");

            return m;
        }

2 个答案:

答案 0 :(得分:1)

此问题的当前答案是old,mongoDb c#驱动程序现在支持IMongoQueryable.Join导航

答案 1 :(得分:0)

不,没有导航属性的概念。因为MongoDB不支持连接,这意味着我们必须至少进行2次远程调用才能为您的实体提供水分。我们宁愿你明确它,因为你可能只是以不同的方式对数据建模,以便你可以通过一个查询得到它。

例如,在您的情况下,您可能不仅应该在Fixture中拥有HomeTeamId和AwayTeamId,还应该拥有一些非规范化数据的子集,这样您就不需要第二次查询。