首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebAPI OData v4操作

WebAPI OData v4操作
EN

Stack Overflow用户
提问于 2016-11-24 09:24:31
回答 1查看 47关注 0票数 0

首先我有个问题..。

WebApi OData v4 ComlexType cannot have an EntityType

..。我认为“这是垃圾,但也许我可以绕过它”,我想我可以尝试告诉OData,我只是返回一个字符串,Json自己序列化对象。

以下是我想做的事

代码语言:javascript
复制
var acptBatch = Builder.EntityType<ProposedOffer>().Collection.Action("AcceptBatch");
acptBatch.Parameter<bool>("asSingleTransaction");
acptBatch.Parameter<string>("perspective");
acptBatch.ReturnsCollection<ValidationResult<ProposedOffer>>();

[HttpPost]
[ODataRoute("AcceptBatch({asSingleTransaction},{perspective})")]
public async Task<IHttpActionResult> AcceptBatch([FromUri]bool asSingleTransaction, [FromUri]string perspective, [FromBody]ICollection<int> offerIds)
{
    try
    {
        var p = (Perspective)Enum.Parse(typeof(Perspective), perspective);
        var result = await Service.AcceptOffers(asSingleTransaction, offerIds, p);

        return Ok(result);
    }
    catch (Exception ex)
    {
        return await Failed(ex);
    }
} 

我已经和它斗争了一个多小时了.

代码语言:javascript
复制
var acptBatch = Builder.EntityType<ProposedOffer>().Collection.Action("AcceptBatch");
acptBatch.Parameter<bool>("asSingleTransaction");
acptBatch.Parameter<string>("perspective");

[HttpPost]
[ODataRoute("AcceptBatch({asSingleTransaction},{perspective})")]
[Route("ProposedOffer/AcceptBatch({asSingleTransaction},{perspective})")]
public async Task<IHttpActionResult> AcceptBatch([FromUri]bool asSingleTransaction, [FromUri]string perspective)
{
    try
    {
        var offerIds = JsonConvert.DeserializeObject<ICollection<int>>(await Request.Content.ReadAsStringAsync());
        var p = (Perspective)Enum.Parse(typeof(Perspective), perspective);
        var result = await Service.AcceptOffers(asSingleTransaction, offerIds, p);

        return Ok();
    }
    catch (Exception ex)
    {
        return await Failed(ex);
    }
}

有人知道我怎样才能把我的结果返回到基于客户端的调用javascript代码吗?此时,在Ok()中放置任何内容,都会导致框架返回406,无论我如何声明它,只要根据我所能知道的来初始化模型。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-24 13:53:57

在我对编译器/ OData框架进行了大量的混淆之后,我得出了这样的结论:在OData之外,在简单的WebAPI方法中,这个wass更简单。

现在的OData框架似乎太不成熟了,缺乏执行一些更复杂的任务(特别是那些与查询无关的任务)的基本能力,这真的很奇怪,因为它位于一个能够很好地处理这些任务的框架之上!

给面临这个问题的人的建议..。如果OData失败了,创建一个简单的WebAPI控制器,它就是不会让你失望!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40782360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档