我有一个存储体育赛事结果的数据库模型。有一个Team表和一个Fixture表:
目前,如您所见,我有以下导航属性:
我想,而是将每个集合合并为一起,并具有以下内容:
我仍然需要在数据库中保持分离,因为我仍然想知道一个团队是在家里还是在外面玩。最终目的是在Web API odata feed中公开它,所以我的最终网址将是:
我已经为这个问题做了一些谷歌搜索,并没有提出任何问题导致我认为这是不可能的,或者我正在寻找错误的关键词“实体组合导航属性”。有没有办法更改导航属性以匹配上述内容?
修改 或者,有没有办法可以只将自定义导航属性添加到我的Web API,然后返回2个集合,同时保持EDM相同?
答案 0 :(得分:2)
好问题。了解您的OData Web API可以与您在数据库中使用的数据模型具有不同的数据模型,这一点非常重要。所以你可以做的就是定义一个名为Fixture的实体类型,将它添加到你的OData模型中,然后让FixturesController的Get()实现如下所示:
public IEnumerable<Fixture> Get(ODataQueryOptions queryOptions)
{
List<Fixture> fixtures = new List<Fixture>();
var homeFixtures = queryOptions.ApplyTo(_db.HomeFixtures) as IQueryable<HomeFixture>;
var awayFixtures = queryOptions.ApplyTo(_db.AwayFixtures) as IQueryable<AwayFixture>;
fixtures.AddRange(ConvertToFixtures(homeFixtures));
fixtures.AddRange(ConvertToFixtures(awayFixtures));
return fixtures;
}
为其他属性做类似的事情。