Asp.net mvc ASP.NET Web API Post方法始终返回整个实体集合

Asp.net mvc ASP.NET Web API Post方法始终返回整个实体集合,asp.net-mvc,entity-framework,asp.net-web-api,Asp.net Mvc,Entity Framework,Asp.net Web Api,每当我调用Web API控制器的Post方法时,它都会返回JSON中的实体列表,就像我调用Get方法一样。我已经注释掉了控制器中的Get方法,它仍然返回数据库中的实体列表。我正在使用Post方法创建一个新实体,这是可行的,但我只希望返回那个新实体。这是我的ApiControllerPost方法 // POST api/MyEntity public HttpResponseMessage Post(MyEntityDTO myEntityDTO) { if (Mo

每当我调用Web API控制器的
Post
方法时,它都会返回JSON中的实体列表,就像我调用
Get
方法一样。我已经注释掉了控制器中的Get方法,它仍然返回数据库中的实体列表。我正在使用Post方法创建一个新实体,这是可行的,但我只希望返回那个新实体。这是我的
ApiController
Post方法

// POST api/MyEntity
    public HttpResponseMessage Post(MyEntityDTO myEntityDTO)
    {
        if (ModelState.IsValid)
        {
            MyEntity newEntity = new MyEntity();
            newEntity.AccountId = myEntityDTO.AccountId;
            newEntity.DateTime = DateTime.Now;

            db.MyEntities.AddObject(newEntity);
            db.SaveChanges();


            HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, newEntity);
            response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = newEntity.EntityID }));                
            return response;
        }
        else
        {
            return Request.CreateResponse(HttpStatusCode.BadRequest);
        }
    }
我不确定这是否与路由有关,但这里是
WebApiConfig.cs

config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

编辑:我在发布
MyEntities
时使用的表与另一个表有
多对一
关系,与另一个表有
一对多
关系。我创建了一个没有关系的新表,并在帖子中使用了它。这与预期的一样,它只返回添加的实体,而不是该表中的所有记录。实体关系是否控制返回的内容?这与延迟加载或显式加载有关吗

新记录是否有一个字段链接到许多其他
MyEntityDTO
?在结果中,您实际看到一条
MyEntityDTO
记录,其中一个字段是所有其他
MyEntityDTO
记录的列表

仔细检查JSON结构,并检查根节点是数组还是单个对象


如果是这样,您可能需要重新考虑您的DTO是否需要一个字段,该字段是其他DTO的列表。

您是否尝试过逐步调试代码?这似乎与你的帖子无关,因为这看起来不错。这里似乎没有返回所有项目的方法,除非调用客户端或运行旧代码。它直接来自
返回响应行到
MyEntities.edmx
designer
MyEntities.designer.cs
。这是ADO实体数据模型
。我使用数据库优先的方法。调试时,它转到设计器中的
基本属性。它对表中的所有记录进行调试。我还通过浏览器调试器查看了网络,没有任何对
Get
的调用。“POST”请求的响应代码是什么?它真的是
HttpStatusCode.Created
?@Liel响应代码是201。请参阅我的编辑,这可能与此有关。我正在使用VS 2010 MVC4 Web API项目,数据库优先与ADO实体数据模型。我试图添加的实体具有与两个表的
多对一
一对多
关系。