WebAPIOData:如何在单个实体上进行扩展?我已经多次阅读这两篇文章,试图找出一种在单个实体上使用$expand查询选项的方法,但在我尝试过的所有方法中,我似乎都无法让它发挥作用。所有其他查询选项均有效,$expand目前也可用于收集结果。模型:Player实体有一个名为Stats的导航属性,其中每个对象都包含该玩家在给定年份的统计数据。我这样设置OData:config.EnableQuerySupport();ODataModelBuildermodelBuilder=newODataConventionModelBuilder();modelBuilder.EntitySet("OPlayer");modelBuilder.EntitySet("OPlayerStats");Microsoft.Data.Edm.IEdmModel模型=modelBuilder.GetEdmModel();config.Routes.MapODataRoute("ODataRoute","odata",model);最初,我这样设置我的控制器:publicclassOPlayerController:EntitySetController{privatereadonlyDatabaseContext_db=newDatabaseContext();protectedoverridePlayerGetEntityByKey(intkey){return_db.球员。FirstOrDefault(p=>p.PlayerId==key);}publicoverrideIQueryableGet(){return_db.球员。AsQueryable();}protectedoverridevoidDispose(booldisposing){_db.Dispose();base.Dispose(处置);使用此配置,我可以进行以下查询:但显然不是(结果未扩展):两篇文章都提到要支持它,您必须向控制器添加一个方法(操作?),如下所示:[Queryable]publicSingleResultGetPlayer(intid){returnSingleResult.Create(_dbContext.Players.Where(c=>c.ID==id);}当我将它添加到我的控制器时,/odat/OPlayer(600)和/odata/OPlayer(600)?$expand=Stats返回没有在控制器“OPlayer”上找到与请求匹配的操作。任何人都可以提供说明或指示以支持单个实体扩展$吗?您的GetPlayer操作使参数名称不正确参数名称应为“key”而不是id。试一试,以上是C#学习教程:WebAPIOData:Howdoyouscaleonasingleentity?如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注——[Queryable]publicSingleResultGetPlayer([FromODataUri]intkey){returnSingleResult.Create(_db.Players.Where(c=>c.PlayerId==key));}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
