我是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;
}
答案 0 :(得分:1)
此问题的当前答案是old,mongoDb c#驱动程序现在支持IMongoQueryable.Join
导航
答案 1 :(得分:0)
不,没有导航属性的概念。因为MongoDB不支持连接,这意味着我们必须至少进行2次远程调用才能为您的实体提供水分。我们宁愿你明确它,因为你可能只是以不同的方式对数据建模,以便你可以通过一个查询得到它。
例如,在您的情况下,您可能不仅应该在Fixture中拥有HomeTeamId和AwayTeamId,还应该拥有一些非规范化数据的子集,这样您就不需要第二次查询。